From 6fc5615e1b2005a2f64fb06b285b4dab47bb81d6 Mon Sep 17 00:00:00 2001 From: Guang <4914320+gy2256@users.noreply.github.com> Date: Fri, 18 Aug 2023 08:18:23 +0100 Subject: [PATCH] modified the code to display results --- .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 278 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 276 bytes .../__pycache__/maputils.cpython-310.pyc | Bin 0 -> 3150 bytes PathPlanning/__pycache__/rrt.cpython-310.pyc | Bin 0 -> 3698 bytes PathPlanning/__pycache__/rrt.cpython-39.pyc | Bin 0 -> 3664 bytes .../__pycache__/rrt_star.cpython-310.pyc | Bin 0 -> 3396 bytes .../__pycache__/rrtutils.cpython-310.pyc | Bin 0 -> 2469 bytes .../__pycache__/rrtutils.cpython-39.pyc | Bin 0 -> 2459 bytes .../__pycache__/sampleutils.cpython-310.pyc | Bin 0 -> 4896 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 250 bytes Quadrotor/__pycache__/params.cpython-310.pyc | Bin 0 -> 794 bytes .../__pycache__/quadrotor.cpython-310.pyc | Bin 0 -> 4085 bytes Quadrotor/__pycache__/quadsim.cpython-310.pyc | Bin 0 -> 2833 bytes .../__pycache__/quaternion.cpython-310.pyc | Bin 0 -> 3275 bytes Quadrotor/__pycache__/utils.cpython-310.pyc | Bin 0 -> 3041 bytes TrajGen/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 287 bytes TrajGen/__pycache__/trajGen.cpython-310.pyc | Bin 0 -> 3822 bytes TrajGen/__pycache__/trajutils.cpython-310.pyc | Bin 0 -> 1738 bytes __pycache__/controller.cpython-310.pyc | Bin 0 -> 2055 bytes runsim.py | 51 +++++++++++------- test.py | 13 +++++ 21 files changed, 44 insertions(+), 20 deletions(-) create mode 100644 PathPlanning/__pycache__/__init__.cpython-310.pyc create mode 100644 PathPlanning/__pycache__/__init__.cpython-39.pyc create mode 100644 PathPlanning/__pycache__/maputils.cpython-310.pyc create mode 100644 PathPlanning/__pycache__/rrt.cpython-310.pyc create mode 100644 PathPlanning/__pycache__/rrt.cpython-39.pyc create mode 100644 PathPlanning/__pycache__/rrt_star.cpython-310.pyc create mode 100644 PathPlanning/__pycache__/rrtutils.cpython-310.pyc create mode 100644 PathPlanning/__pycache__/rrtutils.cpython-39.pyc create mode 100644 PathPlanning/__pycache__/sampleutils.cpython-310.pyc create mode 100644 Quadrotor/__pycache__/__init__.cpython-310.pyc create mode 100644 Quadrotor/__pycache__/params.cpython-310.pyc create mode 100644 Quadrotor/__pycache__/quadrotor.cpython-310.pyc create mode 100644 Quadrotor/__pycache__/quadsim.cpython-310.pyc create mode 100644 Quadrotor/__pycache__/quaternion.cpython-310.pyc create mode 100644 Quadrotor/__pycache__/utils.cpython-310.pyc create mode 100644 TrajGen/__pycache__/__init__.cpython-310.pyc create mode 100644 TrajGen/__pycache__/trajGen.cpython-310.pyc create mode 100644 TrajGen/__pycache__/trajutils.cpython-310.pyc create mode 100644 __pycache__/controller.cpython-310.pyc create mode 100644 test.py diff --git a/PathPlanning/__pycache__/__init__.cpython-310.pyc b/PathPlanning/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..644db30ac32e6500b41749627105ba7cf017bf96 GIT binary patch literal 278 zcmYk0O-{ow5QXhHDHUoZjzJd17pM>yXjK{zQa08owx}ilL}O>sBXJ=X*|OpatQdz4 zPx5^4c}8Q$?e>RA~Ss-RC+xs;+m8gqii5|u&TbHn=_`z^RSjx{)z9xf7 zdKe^{WB`YY8lpDRU;p?#fyS64?mFuy2ie9TPmnJs2O-$-E|s#uW~Cm+>%89ks3&J0 O%WqS8XTvu9j{gF$xbWcSy%^mZ+=e+pJRbKRB@xs-<=^OHO$J*wb z(|F5gak;z@?g(85EH_6OPwi?Jh#AZFeoam#>Y`YphjGf*C9ElaFkBIq@^g}}$zYNm z28kvaz~QQfsEzcuKR!>OG3JO5o%NH0Y-5mT$k(%j5NvptO4(quQjglQU1{ Lx2Zh07@kDo literal 0 HcmV?d00001 diff --git a/PathPlanning/__pycache__/maputils.cpython-310.pyc b/PathPlanning/__pycache__/maputils.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ab1c23941475abb3f1209504e4b0f722e8f97dcb GIT binary patch literal 3150 zcma);&u`>N6~|rW@{e{pnckU&odvXb`LWOk5~N)*XcQ*P&cKQT(Xas)TD!6wSEb{O z+xC>*WYTh?VkWwPMncA)Cp-1D0fbX0lu%C4w;Apwz~S&?|Scj-YZw@ z>yd+J`@_G;-whn+GpbyDTvXo0uepapIul1S$qP2)6V6C>3wI*$FA8twPkiRQ??_Mj zPaWx>@<|{A89sF;p>+40@nF$LaXd@wc;4nk1G(C7+B7SaZ9LA~!#JyoB5(4ljI%?P zJ<7{zgmLM-J*@QI_`SnarxgT+yW_yPGM|}ns@kO0N*OnoPmEir(u6h4mT1+O z!OG^1@%O8FDVwopM5BrWv%cy|;DT0f;3($CYGPHuX;rC1w0`R7oA~?3?$*y5rJJo; znr&fimFny;$ttO~W+(msPv)uARa@zA?d7w1kwtOg!Pl>{ACObWYg= z{FZL(90?ebOZORvkHq2|v~iw7@hdP+^Ixg*5>jiGjIH*>Ke>{;w})R7qnN^L9}hp` zOGaCx#y?>nAZ!lYU-QSJ8}{ zJByeMu=4Kac2Q+%(cFWu8Vt6hT35BwZLZ*0O%qM{ux~ms1Ms0r3NJHI<$R_PP0Dyb zqQDpnJ;G?~V8d#|i{{#~G!lgK8h#By5V}6Q3HS7FS)J-7x6tk{xutWCh-&8u);U80 zf#g01%V&&afp*F6I2^o7a*MkdrBcSFI=*zmIoW>~no-&^eqI8=RvCljK*snbmL_VY4ifOZ^MV;RqGWL)fGgalKDmBz0t%x?4>n10=egUf9Fb@Vob z&xmh;iI9CBA4H0XuQu|Zdw$enn19}H(pU4D{Z_v7}3|23G=d_zJ>7(oh{fox>wMfgLi*3VWzaDI7Er)Ez9FMM8$!~>`XAc$KL-T;PMorj z+-0~NETfJc1zp$;x(F)>+*v|~&jQTeq1kOH2d7wzj7{)V34?@Zse&mUL9pLZ_0{)t`Jcr#1OxWp0cISwiv_bK=?Z8f{&f&LnX8ZXs|5gYV2WoZgpGeGzzxU#ZCvzE>G zt6U~BZBsL(1(Rm355T_hY7M5xYd!WneFF56N>!gi-2Li_VTEDGlK^5;7YKx381_rU zCfA_}XkEl0UE2+%>Jg7X{|N6JY{;nMx89CCRLk^Md4Il02TLMc<=eB~6D2);7;(3SUOjW@i0WT8`+|Z&UF;6?9Ku zDQ;1f*rvOd z#XCaNobkW}Ng}HZ=yw_i literal 0 HcmV?d00001 diff --git a/PathPlanning/__pycache__/rrt.cpython-310.pyc b/PathPlanning/__pycache__/rrt.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f16e241cb535b67fa495ed3fbccd0061cc7d2501 GIT binary patch literal 3698 zcmZu!TaOz_74E9Oxb5*clZiK(ToxJ@&>E2p5EjsGU;@8qawMdLS0o-m`!MD$KLrV15vnI79#$jq3s%7LoztGHwymzN%jxQ>?|kR0<8pPi z<>0#atG}y%TymU$QRD38qH!O0MTK&d$eq66ryRR|Pt<+>IFOET#*Kc69;w{C`Pg~S zQJ(T&I?8_``z<9NIlbTrvpCyF0%cEF@znvf&t50r%h8+ixB9XvnzHFOJ#|C*DtIaS zu4<_8rPKFPUo}s=xeA|)xk4Vm(&`bO?6qV?u`CGH2fs~@8<&Ro0@ zb0-$4Nv_GchqgNpPySTFSv<9(CpeZ8i=c8Jjv5oCnmKa8D%Ebcy~9Mq}Em0xbHtS zI!&#|r8`b0z0i79n(t_$fnGsj-CraV-A1i{X_A=TSf^E)Pfb=9dXs-Ds;kX$GT4M&n&`o9Jiv-K#|QQEm(xV)(v8QP+8CLg%rg3@$*3`dzhi&2x>@O`q69KNaqx*SLB z?BUht?}fJ=U+oz9(&y z0AAu@%FkM*{v0g7hP$Hgb=`U~1k8Xm>G&d&oh;^uXu!P)dM1ub0X!0Wp1y^J$+;ZK z4F`0hx;J-k5-CO3*?=^}lHP$VNCdl>O&^p+kq%77MBwES50dB@(kLsKEGpA5gWIBV z2NrDEik8=Y1|}iw5ohCwRt_Lj>NqbJC-yy$H_bk0p!Dalp{1wwo2cs^6@(0NWM}7s zXZ0SUNdXxxkVEp=w;>i0*%X&WAX z>k-cz)ys`2eBje6!=v6#RO+Z+R2}}4GAm3kYPGH~s{bAvQ@KgRkTW9vY$ClZWoY z(U+;k{ZdDB0WV^V_41^@>T*AU!y_hu<_bkW`8)SI$8pb{z4M?PPo^ei!m|RM(MVEE zmPbYqF+v@+a8l3q(Wkfo8=YjQoQ78BxeXFf0r2oq$L#SFt&@Xe#&{%jq#G)|2w{Zj zeu}#y_4H&QHbC<>olXDiK*44mg7Q=?&*>NOi)4dQq%46DJQNEDr_rq?VqY-sh!FD` zQ-4QZcW@>lPZ&CL_s>A+58@#wR+;!c&Y-8h@*o`ktUJj|!x-%EmN+hkI+^UwF=V26T`;|S!(?qYWdcmXoRDF8?8DbzlE9=kC)WZ@6fB0=oV?VDl5^NvAXQ<6L9Y{pYkF0Kv_OoJBacWC zXI~s3i37$=!yQQ2V5%u~!0|IqA#Y_-^;WDq$&C$mvf)&xtkE|3!Lziw`>yp8JoSA{ zrAdo5$yBZK4Vn^357N`!a(~Iq8e#(5x|r@F*fl$OkptLN8z@5PU5nGl7Saxn>y%EO zVJg3XFAz7G47x!z%0rQeZ}&Qsn->M=Twbnq`~BSVvTxZusZaJS7g-C|}aV0isM5p$Hx6N5oVSA^;biHDUXe!&U}&b>W$VrzTU)%9_^y6W6>Pu)pZ zR$_tc&aeNW|G6f_zp3&1<)Lv8cTI&BS{9-w`Kd-;&zDVKFbb8BV$|wI=uz4$mL7=@ zg!XmtLg?VR>cv_<6y5L$vxw~@iLxu5e5X(C*DoK9d$?{Zw)0@tF@ZiyB_#Cc{dyC4y?tb={KhyQ{?h!4eAMtooP+j4^kGuXU3M*#vxtxha zqNcc}W2c|Hp|Z6u5{*t+NQ=j ze^8}`J3mUFCfQS)l{zW1a$tAeIT}dnbTlrq#H2QJ5gFw+GkAA59cRwd`KT8>uqMl# z&!sm?$KA;Jbyn;ca=%$d;k;j_W79^hw>D1gZep^!Dke6sO0z;nt0-Oy^9CND|7`1{ zIy3dwDD7{-E=x^+H|b-=Tcc;q^H-Bpo61(^`onxQDN>qe>qE@@VUd<)UJka5u{Xxg zT$ChvncE~GRO@pnL=ekZhWu;Gww$)%pc}_#eFEtC3Q(b&J@E-DKvf*V6GJtZQdl56 z^q5@VP#Jm8mBj4P5p~^*d|$p{n{Kfk?`x2O{Tw^-lpBx9lM)#2;h111a~?Z%UaB>_%>^bc2N^rYtqn2@29&xQB_&a( zRl+M-ZHYr!X3RR??Jf1IqR4Cb!pX7obzWO`KKtE;W4uvX7w_aHXhkdR2Ic~NROY?N zfOj-?uf3SM`A}45`&?scG{r@F#~)*}RI4{p2(>C#RixVZt;@EzAva`%o@qqhCDT5| z)bT}i5(D<^1}atzxgjL3$D4I$a`HGTlx^DM5Jx-`i*a5`gltI*^D)Y1Pm>q^JqzfM+H*#fG?q zs4;KBv>P&WUHG_~l)5%wL!S#9qC20ShBTw=H9QT9YM-=kG9H8Tq*bpGGHitM`{=D{ zJwicTVqP;V=&3~$A?RiTzJp3bz&S16gSW4M13u(LmL%oDFg%d9MaKa9_T7g(W2aeY zhr$NltaCh?jdUv0X_nK3{kY0Y+l_dCh8StCQ^CsnO{$SbH~v~et*dyyJr6;7W}D^; z#)+ggDXLKCWUL}Ny+HdsBNC@JOkN6c^M-$m$^e@qPr*lO2+s^r?x{m>F3dG*albNm zW)j}R7^@`rKe@(z1Pk}t5GpG*{nQ`4%N)C1Z~ET-YBZkMj7iR#^O`D>MzSC>c8Ck= zXrz*QwvYaY3xK`Cg?J2gED9H@0X4O!9Nw%}Jzu z(0UVho3u(!R|&*d>Uc`Ah*2aIj2~qMgx#T>3!FZ;7FfmB8xmFlqZ#a|%K~Q*@`8bw zd4B~yf07S4fy(6{appXUwGTQ4(~WUaSw>)gx5Du-FzI-As;&=QIIRqJaYSFEj~Xp00CW30zJ(KbP0L{^0L_qw7C+2Tca|>0Lv#UbK$xnp-3 zR>pjfT7e731_5Yj$xRG?2Q?=jEhuB&qk(s+I3p@cj0COaV~p1HDS>#4)pUi(ax%Jo z3MV29-AopX$^xgKSf&gmCPSswo-%J+4@h}PR#e&HUJt#uVMpqt%C-$OQk(`eXc8wj zoUXJ;Oy`Q~oTfA>kvNR!NJ9s!6HDJsH+<|EICx(&) z95tg1f>xDvciDO4!n$xLA52WfdhEgj%m)7-;UhIH4EFg1$aqA8KyAQ9cI z_7|*dASSS#hw09O-SCnZ*@w*{v4{|ybOs@91oA%Dq3j&2j6c7CFAy`C45mdj(nqA+ z+uc>lLd$fNC5elZWK`)1^6A92ljO-HEt(N?iQf4t3fG1X*}Ol>>~5u-QRKh2LZp}UGd28pezVlTJ#4KylyQ{Nz$+|;hMXhSZ!!+d~O gkmebStiP!FdtbC@7u{(P`T?cltPK&+Uzd^kKb-7fX8-^I literal 0 HcmV?d00001 diff --git a/PathPlanning/__pycache__/rrt_star.cpython-310.pyc b/PathPlanning/__pycache__/rrt_star.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e62fdbf2187718b9de60ca2aa57a058d13dd8661 GIT binary patch literal 3396 zcmZ`*TW=&s6|SnjOwYw*uh+?1Aw-Q52$QhuL?9HQh-?TKA%PX_K%@~-t20#|_iRu1 zY*o*C*BVO^UMar;o@O5RH}D7e1w7Of5)aY-1B8I^o$4O1$ATW!WvWhH&Ue0Z>Xchs z9ft4yPyZ_ae2cNa)1T{~k3aWO%nwjWCV9?2p;qL4Du#kH=}ABLrvA|9>=#T1GJMKp zsDevx7|PZ$8${1JmJYb(Z=u@$WpPsKsglR(be1dq9CI}3k5rbA=+E_!PN&bDpi*qe zB^!!1Z;Q6q_T`-~*$H=E?`m!xMXam`mJ+z_Rl6|x-xh;3lM)H>2McbCQ z}Ms=sn)vp4QHoxgqX)t~-I-?I;%{{?fSs1|TF z_1h>Oin)iXVwY^m7knWW-ojr5i*V6ewKyBI1xrNbVVqwI^nJ;W*)x7P2y9^HGo@{m zBw3MFNn*PvS&`;RQA%YrZT$j3Qv*1NtZ!6)g0;AEW&LrP=GOalIElE_u2dnD zTovQ$)Naqx>NL^Hl=-~M%EIoDcvA0`=(JKcqE%U?^fPYTNixb)W0K?<`{&`oZ;jIC zV498&u!BnV=rkGOW(U(Jb^DunDs@?v`tETyo#!c?aPTos{5VgGA}huRT2~3(^WN-< z-hw(ULW>yK4?^yL9f}=(zSF>eZ;ir;2(tg7T%=0@F(4sFz;X%R->IB?qIez z*)s1*aS;@dUG}k80E^N%KM^2}cm5;N(ZtoMiV5TRM3>XpnIx{tm{5+-PP1Ia>7z1} zz#=X`$Mh(NVTtC4gKZ55WblO2z>Jkv%6h4kHqdD?R{9Q2ZjV(3GZnI&I#SqH0Xrxx zfcX`u<4s}s_NdJB%#eNgOz+ada0aoWvYnbxbj3lacW8=d*3*Twy=JR=KnAkpFv%^uh~Zxi9YZ1Nc8aA6&)eI=!=N=_<3(_OA;Rmh^{{(GwJQ@_y`@~ z$`%}!ft6~%Ss}bQi+MCo{iRR-RF5wM^w}g_kyTp{xPBLHv~1JZq_g0Y4(v!{-DU4; zy<0(Jv#4mDG^wZ$d)9hRTLoon=~CUuLFqxavKce4VN{ zsQNZleN;9~XEQk7z;ht$w`qdH!VMtZ#`n0Vqp6q19);`|TCs){Mt z+^cmb>Jp>#@(dh{L9}^Z5qF8B;5kt$&WfgIVi2!X>|hP+AFzM+^>$V7kXHT|fo%$SJ*5 z9TE?Io)yyZ$Gu;q)+mQ##ZcpMHqELhE;MG3RN;Wp6z9h%_+Gvb9+2l*4^NjS=&dMb z_*af?`$5vgs zO58#081VB0n1Bv_(~w1Lw}3?{_`C7=Olj3T3gj%Xq~q|r*suu=wtXdSTg`Si75F~H zk5CLn&|UH3i6j~k6*la)adl#S9TQdz5#lz&t3Yhv4}{)#k--Jjg-GaO3&@&aanNx0 zyGLp?*9I2KpTzT-1oNCSbYxr-b5%`g^4i*3X`a_^NO!K4r7JYb4!gChI&k#=A}I;~ z4#o6P^+gA^>X4WI`#fG-?EiVeMxH?ArScK&B~jJn{k^zwFU&+tJpFp*Pl6_7hM+As z--1*Nc>(f-NxRMxKx#LqZ!f%KumEd1%Pu5(E6VNoKHFn(2!vS2h`V)S8`qDtLkGk+ znXHk^n)Da0KF0ez*mA+nhM$-7LYn$bq41*LLuEaP52LJTX18f9Y!W}>5nd#h3s|38 z>&a}|c!UioW@{VF@eFA_pe=92#1Ap{8Hyox_wZhaczt$6?>~O{%Gdt2&`=+UjVW8x zl;~>8bT#E|csh}-7U@(WTkRytw3PFl`n@E1I8XC>#^rkYE-j*m)I~E*;i!HR9aYHi zn(kz`nyhoA@;phdU7J!3P3ecG2u9v%2!)6VPjLG6{}pwjz35i79krq`@^@NJ@^H{X yileJxw^jwIZ{DQS{*;m%7hXK@%ZXn*(Lv@Cp6LBrwI5TEG6X`zdPs5h#D4*3J~w0l literal 0 HcmV?d00001 diff --git a/PathPlanning/__pycache__/rrtutils.cpython-310.pyc b/PathPlanning/__pycache__/rrtutils.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cad3ffc20cc2f62aa65c8ffda6fe4b0e25e5b2f7 GIT binary patch literal 2469 zcmaJ?OK%)S5bo}I?CfUkI0-~CPYa2Nfg}qY$R$FNKtj2!f-OK=3AKjljy=xo%%-Oo z;>}tDIamIJ%`Jb3Lti=N%#90t)w7%RBci3Qe$8~%S5;qiy|&h4X!m~jQ+*mS_7^Qq zw*ZU#=nV{j zwy{w7>gWQ>5TALJ8<;45>~TW5IH9By!`9}Ho*mxWdUlwmfr}s2W}I1Xjv;X7DhaRC z3y&U7H+o{Eyn@4qkZr6S-kuE84#lR*##&0(lX6_EX-V_GluxEv*`63O%v>XJox}|i zD{Ze-8bU&`X((O^OL!6`K|k>OIkwKU0IU1xo}1_Sp~IFTM;zQ}IRZ9%j&xL4^}v-x zT~d9FU9|=`t-EO38vQ?{`2f1+L>IP8biwRcEC>`R+7F31@VBAVOCuMkV(hvVGE|mD zV_kv}O40!asi%hAx=04|F6O5^LjLzoBX>2Fp|Q_*Sk6a6OuH75ol5q~Yw^1JJ9;V5Z)(d+20ks4|-wx)g<~H!<}@8(Zim zjs2!e9=2Ntt_!5PYQW*q8h(=csa-CCbhUKR11fw#?Ew?8^Qhm)-aF`R3Iv4PGkt-3 z>B0-lqqOn3zrci;*H$-9b8#F%h6o$qkN)7>>_pIhh&{#cqDmliM3rE6B~xmPBGzo# z+I!(81rxQi5vVXpLN@S z;v}coEgRt>I^^ih=McXwPOw!gq5C_cT}^$un3Dabv+!589BW9>i9($N>wo+VXFj6W zMW2JBYc0fu4HwEaC6ot9?-&7Gy$|H=*Vf`7E6cm2hS(UdlBO(&Y0qrZZ*P%!n*>!` z*KaHy)qJe&UabtV%6v>>K*GbNq&fv>RfUOu6xfC?qAD!n9#4`aPU3!S=rm165fWeP zwh%M literal 0 HcmV?d00001 diff --git a/PathPlanning/__pycache__/rrtutils.cpython-39.pyc b/PathPlanning/__pycache__/rrtutils.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..026d994581bad4686489c5deab9790634f48133d GIT binary patch literal 2459 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 literal 0 HcmV?d00001 diff --git a/Quadrotor/__pycache__/__init__.cpython-310.pyc b/Quadrotor/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..00c03ff7755ca92f1d2c4e785f220799e8a4279c GIT binary patch literal 250 zcmd1j<>g`k0-Nw_DRw~mF^GcYy(BCpgn^))|kYK=UG0366Ba;rM|c~X;JY* zT0wWJ<92Y;rCFl!H>(xr6ky z#*f|pvi|Jh@jBmnKD>7XKdtcx_qEMxp6QwV$L#ByiyJ3vLM;$|esXoKwM2KSo;i>C zofplw)9y-gtCEH)N^Zv2$FDBkI#uI(oVGut&ObIze<II{|KkP+ec|Tbm_)0cjQD2g- z1Q8weSyitht|&+&Y+%qQXSf&}F6cNtN5^u(g&f#FT`Oleio0Nd1NQeq$_3}wZ;DXI A6aWAK literal 0 HcmV?d00001 diff --git a/Quadrotor/__pycache__/quadrotor.cpython-310.pyc b/Quadrotor/__pycache__/quadrotor.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e838623b371becd49e3880c5101cfe1395ce6ad1 GIT binary patch literal 4085 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 literal 0 HcmV?d00001 diff --git a/Quadrotor/__pycache__/quaternion.cpython-310.pyc b/Quadrotor/__pycache__/quaternion.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3c20e7040e017bf477a4ae5e649e4f6564821330 GIT binary patch literal 3275 zcmai1&2Jk;6yKTMwH?QC^WnDXCrgkJ7R45{T&k9Wf&&j5 z#@bx^aqK_9sX12sKOFXi#HkVo&OHFXH?wOy4j*gH%$s>{-n{P_M@vgp1K*t=ei1(d z`i&;DpNYw*Xz^uq!Vs)yY_l&7!G-zE5av_9%>{dCG_BXb8(Tj0v)^R@BdiA4D-7DP zZE6nNR$vQD*w2ioY`Y{%qWsL*E{lp-z*rGgv50X&)Wj0Ts;G-|7#GE|Six8mt6~k~ zl4wAJ^I7$qp_c?Q>_*}E>J*Nhok%)2KX+u5cnOfP&u2s=*h1SxiyP!NzM-Wm^T_C(9Qf2~XA|a5C3#7b-kBM9!_4%f7zRI(3FgCow&+Kpj{peKnq{DS zamGfOt@vaN6Mx$pg|eTq1LYgtQT%5$63HF8infB4xQ?!BR#~0bS%aO=Z1oQJvrha7Ir{!<96d9YJ+DFI33|sp}F4CDAe)ugplKv1i1g zs8s5cX%P)tw3ajf9ulNSK zb-v0=jQ>Tg{-03k&3JVhL#VEb(Wx+`iZm&%PcSJmP_Q*Bq9}?~UQ;Icz8SCFH=Zy- z#nz%Mr8r306_iwp5L`XBS~Z3B92jBKmH5I`<(T%EDT?wMuHO?XwN`40%DyGweqA|ne7vUUc;1hO}^8kErm1y)W`UJJyJdnJeTbwt`>8n1nf7A^-jvw_0L;c!w;z1Ayr#R*C@URv7KXzMTuipy0yRA+% zY7hE;+mlJx?*(!D>j#^+Zr%L&!U zRix{fr@LL!BXd6BR}sL4O0G8H9gxKix|&^ORd$_kunorl+%PZa;|9BoIV#k(sgYV| z`D``obmfI!9~Wp=MG1?WZpqW_CF25011g aY2yqt#alhrDtEL7pHO{@=~Y-UR{7tBkGfs} literal 0 HcmV?d00001 diff --git a/Quadrotor/__pycache__/utils.cpython-310.pyc b/Quadrotor/__pycache__/utils.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fd805da3b6d965dcd0503f985c8bf112989b5914 GIT binary patch literal 3041 zcmZuzOLH4V5Z>8cNo)C$5R4xr6hkV3h;pP5QbiF=o>VGDQBGnzq~Z#=)|!#Dv36IU z9a)x2t_qkNMe!HxWBvd){sSitd*u{PoO1|#JzC4L$jbBRcF%P8H$B}GPfivse2b6% z6hDqx)?Y-t{@EaIpe0Yx32V&~OxR7fW@B`kPUx<=VQwuK=GXFJVXY8)YaX+ND{?FJ)Kc-gZ9l3P zW#|XZtGuxxKKu02jXF`~Y8)1uK~+YHyvlE_d{w;Plzt+4P0A*(DJi**c^eEr5LfvwI@LHy zU7w~oU;EMJ)J?XOt}>F!KAPvzZlfg}owoK_A9&4M;}%AHo_dF~!YnA+=}k+D675k;%;uS3t(;v%cMTY7U^uFR22wC<;yh zLzo-_Lzoz(z&CRPlB38(MK&r2UCB+^a_Y1iL7Kx+YajC@Ft`o6lMqV1Ac#5~Z|24CP^zhmS|u9^TsYLYqvPElZ$95qAp zS?cDfqcA>p9QPmNIAT2wzB!H!_e1uC%0*WCkz`EH?KK-QS@b4Z~k0+;WtuHJj_ z@a8JN9Y@4f_nk!4aKN48hN4l+N=gwK%>QEnpSf3viv;?R_b8e%){1W}!LNg z6H`*?I;m6C5m`sW_s?~cQ8Vg~>sVpZtjVdv!S5iwl#X?$8aVCPtRaMas}O-=dqK_W7GJ}FphLQZKxS= zX-?D(J7?33=4Wh|sk2ykEI&}fAy-U(_y!Y1DV{ES_OG*4v7REuA=Vsvs{G#(P!cuQ60qQu_WIJX4OSaH+&zCRPP^}A* z>@zb*BSPIDcFkb=A`@T5ptZ4{bQMqsIRlM4T8d?#qi zoA4tmQ>WMjJNrsq1m{?pq6#?ln<{mka-6e|TTAt|hWo=T%`z-zkn7xiTR8CEJlgus zSIA2T_`MN{3;#nRztr=z@}HLDHk|FKkH{d3mcx$@!a+-@QP%$frhHe}Wda7xSlC*1rk88GPSQ@)hCz$qL>XKb-9Be~O3*S@BWsruW`W~|Mx(WUOwIEe7nV>>D9rmUCd2YaM;tu?B)c(nZ;(n}8% z7lAp!&akups?R}|PNaqPbrDzB*VA0o4qM&qp3vntg>X<3j~*=MF43FIygE#+GXZT* p*X;S48K!0qUN4Jy+P0hW8o`~={dO&{aE5ud=XiO~^UhD?{sZA1e}Di0 literal 0 HcmV?d00001 diff --git a/TrajGen/__pycache__/__init__.cpython-310.pyc b/TrajGen/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ce34b40d4f30774fdd536d420a96cb5571ce70ba GIT binary patch literal 287 zcmYk1!Ab)$5QdZ8Emm=94?cj`J+yg&B7z6)MJQE-PzYf&U?ka;NfzBl>I?O-S5Llz zCnr?Uf%#{?VTPFrb$!9eRxd}hqxhNOzZC?xJ+dk#`&Ga)`5E0!#>z9#c}ok&VKwA9-E0g`yIo)R-R|-lXVeG zVys9G3@16y^1T+%5ikm`TY(TkWBaPwU_kic6gRy#80dt>*81M*WJ4#OPPYlAY-f{F W%l$A;S3a2D!A*W3=1rIEivIw;UrfLN literal 0 HcmV?d00001 diff --git a/TrajGen/__pycache__/trajGen.cpython-310.pyc b/TrajGen/__pycache__/trajGen.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..aeb5c41e3c7e5cead3ed1b99fbf09428858fc5ea GIT binary patch literal 3822 zcma)9OK%)m6~6b@vmbUmi4)s#7{Y+8=>WC_NFe0NBr{P!2JwlWQwQBlS+tu!_ zZr`eQVpA<4If!8~|A2+P%!c2<3bCFAi@O6>Ud|RF!FTTMcDrK`v{mQ6U+4SI!~MCr zD#LH{=YNs$HOBruk%zh~y{^B*9y967 z;3bp6iHHKpw^<`R$9lHa;M(t|S=`-4E$k19w3i+y=Nx0`;P+ZI>+!euv$XnUm#=@-Fi zSh9|PMsq49JFT8EsEAhAXiPe0q%Ik*OU&%yiFW-v?iFRb#(@r~avBu`Yn(TiIfD#?>rwf35=zDzcHN49)6jHT*B zec#9G)s$SGr+$2EeN06zp5$cd5Cg>AK#h*Wqq=& zMe3OR2p>YrV6uh^^a@yzr*ATcZOiGI1h!tCRB%}H=8}Wj7M2Ru!egV#OoK^NaR=6E7tmA*qi1@!{ zZElDk%F6GBtbXCj+6o&9!#qLk>QrDT*m0BeR4vi>so@_uXn9xPvXuK5eu|U}D|F)* zX&(9S|LnbAJbf6sX_g$!ynRG0f+M^KnF(gpmKvNk4_^n|N98iR*qKm1olei1fa4aue znYP>JQT8$4q6x$ZV`Nmx$$;;G3~PK*+`2-D$)jfIOa@3=H+23JD&$Z=39-x;2}oY@ z6AlWqQ&7Q>98RWiPTkTy<0HQm(%E;^v(g7GoCQ|;3v3jWfrOK)0d|rEe;bq=kz50JK!M%_SQ`Xg_c?Ps~>&oqCi z`FljqLsUMFoR8ZBh`~Vfj|_4aCvs*MC&KkDd^vT&>4xteU)Z zy!wB?^x!Mt;2A3kw~WhG#LB6uXeaJ=)jImlDZGp=N6phDvI<3h*Tib;|SZ2D*QUFQ-dTK)wy%wI=TIx^tJ`;|tCc{)DeN z-{JGlBeIXL&DzInRy<=OWc*|%#zg*%3gu4}?^f8ptL7(la&{E$$i-3LzIVo@18^`8 z#$@`+aZJRx({ZhVpbp|2<01oaCp5q+#C#AHt`m;RwRISPKnre?MhHT*U=F6`n^pif z8<5FKk7BTKx8bN#gajB&Cn&?Ra^l0i1zQHQ-G9FN>dOy5`{-R0LoJr{=yM7*jfxE? z){#BmOH^W`3I#@sCZ*ImAQd7-i|UV(JXML@F5)6-RLAK^q28fcp2^DAWIvi2ud#imwq|FHcc6?%;5Kdn9HqAkr(kXZ zygQXLFs3+0bc$j6H)KS+zgqmml)VE1c9;+RsTZsdeVOZJy+h7HCac^lM4!t z{U+;!Y{*5l1a~Y;av3c(2?wmbI>YnXej98(4F^gV!#q*8v8PO|l{_fILS1aEz#W8j!y_aH(jh#!tRag3#xU$Klb0yZ;*e#vX z#k~UWV=s9ZHH;*RY#S6i2LN&w??YdI=@oI1xYdQ+~jv3~}-E zEE!3q+uZVhSnWm39gohee#2oqS~L-6S?elnwITfczt8HyP!i@?xi(WKo!y zT~u!N%_z8;OX3YSP1Ck#d74`{)H)nlSBL45vhIb_nbAJ3TQ96^ZBI9Fs%s<`Xu&O% z9vJIIndY{Q#b>29&Iwnl8LZ8PK&RBZA$ z$SdL%p4CTIojyEmovxJ*a?9DTpw`P6%#8Acpo>JMdKGp34v8j-brjagbtc<&3x{)< zMV1#9QVUNj>@5r|#1@XNK)~mC6T%hV)_<&wiNloOHt(Vc5bFjkVQ(PjP51)%5BzWb z#&Pxg^cU@k$fcV`XAwgx^uI!dsu3}Tk|Cy5MWTh5h<%eGQi5s}Er{N=#X$?^pjvec zcI;rKVa4_F6_V~xSS@Yu4jzBZFaGT_eGj!MSSLJ>&D5>1u|X22CJ!TJMU)vUOq^QR z6k&8S_4IrAgLMuE;dw<(3+EO_7B2n^%F3fyM~QlV7LM{PP78A%e>6n1C0NC;fw<_8 zar%D)Q6gQp@!4tOqw^LJuJkG({5wGChv-3-j|vI>0ZrQ^c1Tn?zD@M*>2>R-!$Cfpf2m?abeYe1djS6^+c`~LvA)N=3u literal 0 HcmV?d00001 diff --git a/__pycache__/controller.cpython-310.pyc b/__pycache__/controller.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e37e32bbb2912236ac248f4e233688b82d591009 GIT binary patch literal 2055 zcmY*aOK;mo5Z(t#kuoLIvMkAVVDyPbEfV*EqCgSUMFJGap+V~;NWzQ3ii~VU6piKD zfs5rS?X~w7J=neF(tCeJZ$0d(Ko5ogLQxd`hLW9xzOh33~MW>ww5JM8VBCmRP17_k?b>8|>D68EykwTh8>A4w0q^*YaPb>$cxmA`T3uGPO}qBC zYyurlmQN#to7iMkL>~2u5zn~p5T;0`>Kh|%9*G-rn5NHsn4v|Ygolv7b{)U zoj7I{BbqpmCF-!2I(p4Gu&hPQtYLN{HekjBb2E24{)3Jl}-tUN4AV%pS-Cx;lvRwkp7<+sq-9tdJ`vq;b{C@0@j+ClxB1_`td<#Vv zduhEX7U})ii*MH6#Y3EhjLCa6H+c`|v%6cn6d8ite`U|{h&#mqI zWv0sQJQ;1PtjrQM+TR-$X||o8%;&FhyR6uK4FyvaxjU5Ne*P{WdYgM(l|zR*(WTK8hi!2T!i5+3-r=yXnec? zbvGi$7GlIZaT?-{aOjPwJD*M3u!m&V%chB#qj~q&9kEiiOvAJm9ic+hK(z>{6<+R* zxuK(|WU5233INk?E4muBM$jYZ6ATE5-gBa_le9q)5xhq5I>8$RD}Z5Jy-D(004q|h z-X`rGf~y2Wf_DLN<8c3=re~n{Go6sA-lNrP1lI|+35b7l_yCd(K%%|<;y6=xp_UX3 zh~$Jk7cpFrzsq!(FhkfhLj`G73Md4c~PxStaoNRE(Tt)w&@$#j9{YW27 z%lfUTTY8>(U7@;Gmzk5#vV2i7%Wqrv+YIl4`Uoy-!YT^orDW=~>Wuswd66DXv(M