From 7b25b91c3782eef21bc5c65f2894be8db557f1f2 Mon Sep 17 00:00:00 2001 From: gitea Date: Fri, 5 Jul 2024 15:41:12 +0800 Subject: [PATCH] =?UTF-8?q?v0.1.8.1(2024/07/05)=201.=20[APIs:=20do=5Fbrake?= =?UTF-8?q?.py]:=20=E5=AE=8C=E6=88=90=E4=BA=86=E5=88=B6=E5=8A=A8=E6=80=A7?= =?UTF-8?q?=E8=83=BD=E6=B5=8B=E8=AF=95=E6=A1=86=E6=9E=B6=E7=9A=84=E6=90=AD?= =?UTF-8?q?=E5=BB=BA=EF=BC=8C=E5=8F=AF=E4=BB=A5=E9=A1=BA=E5=88=A9=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E5=AE=8C=E6=95=B4=E7=9A=84=E6=B5=8B=E8=AF=95=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=EF=BC=8C=E4=BD=86=E6=98=AF=E6=9C=AA=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E6=80=A5=E5=81=9C=E5=92=8C=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86?= =?UTF-8?q?=202.=20[APIs:=20aio.py]:=20=E4=BF=AE=E6=94=B9=E4=BA=86do=5Fbra?= =?UTF-8?q?ke=E4=B8=BB=E5=87=BD=E6=95=B0=E7=9A=84=E5=8F=82=E6=95=B0=203.?= =?UTF-8?q?=20=E5=A2=9E=E5=8A=A0=E5=B7=A5=E7=A8=8B=E6=96=87=E4=BB=B6target?= =?UTF-8?q?.zip?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aio/README.md | 5 + aio/assets/target.zip | Bin 0 -> 24139 bytes aio/code/aio.py | 2 +- aio/code/automatic_test/do_brake.py | 190 ++++++++++++++++++---------- 4 files changed, 131 insertions(+), 66 deletions(-) create mode 100644 aio/assets/target.zip diff --git a/aio/README.md b/aio/README.md index 83a4732..b5d3ff6 100644 --- a/aio/README.md +++ b/aio/README.md @@ -424,3 +424,8 @@ v0.1.7.6(2024/07/04) v0.1.8.0(2024/07/04) 1. [APIs: do_current.py]: 完成了堵转电流和惯量负载电机电流的采集和处理,至此,电机电流的自动化工作基本完成 +v0.1.8.1(2024/07/05) +1. [APIs: do_brake.py]: 完成了制动性能测试框架的搭建,可以顺利执行完整的测试程序,但是未实现急停和数据处理 +2. [APIs: aio.py]: 修改了do_brake主函数的参数 +3. 增加工程文件target.zip + diff --git a/aio/assets/target.zip b/aio/assets/target.zip new file mode 100644 index 0000000000000000000000000000000000000000..92a917449d0cf8286b6153b6cd4c532fb68b05ca GIT binary patch literal 24139 zcmdqJWmH~GvNnvn26uOtAi>?;A-KD{yGw8l?i$?PHF$7$cMI@BW}bPHnKSGBIX}Mj z-K<_47Q4Ias;;`at9I>MRst9V82|zR007u&NA>OUuMha!Z`yi}rWOWtvJ&9$cl_%k z`(Hc3zTNZBPI`8_=7#^ZE5xt)VuG57lHa<}0|Edb|9e+jI|~~-Yh$GeJ~%&m1kmqX zh4?i_J5#0T(=d!C*$$#llL%WY863)T^t9yHPcISg7}K>^>uBPEJo%*zWdIfQO{duJ0Q z=R9IGT`@8yXG$>!pwQY&twdk`8``pJ@*JfCFiwbYO!ay1=m$^%YRrf#lXbz#jnpK0 zxazp1@T8I13D9jiEn0*Tv}0$0cZk0O`4ggzi{Qo}5CFipH`_q@cZim{rdIFxG7{Hh z7G;qKG9|iSZL|_~?D`V<`$#ymn8U&LyOX(D3_pX?%A#q-EddN5_7ZQ?etb z9apiYh6mcLIme@Oer7JPWt6ZHDg?&W48eUHMPK{>x#R7}$HY4N7%*gwICoiqd(1(ppPTwcSJc84{ zjMib54%B>D9-;8VTh#Cf&R6>Y1M7p6essebA~7A}l^ko7m9-t-&QKXlQ7NAqsI-7V zRHY@$!cb^*tF(fHsT)->a#5vV!ZGS@ zY!Wlj!4zhlxYpo~(xG`pGV<#5Vm9X_wI=4N9^x7rD>@2>E>!T;q7|H+&1f4hRd zqn(|hmBar+g1$?t#wl-|7~iM@^*=lRcN&bKH~IF91~>nv!6x!)0^Dp;Kj8h(gc0&I zr}1gTNt}ile#}$qbc!dk<-xWrdX=({w(!<%j^OC%f774`=0sbbTMkVXCUt>9VPtI_ z=5I8JK}Pp48XQ3A-HOr0w40+UbED+$LwncE?-2gd%s+S#5m+4N_6?NH8#tW*1gGm_ zYOk&Ds&8TV?_?Np4in`Z<#22JCm)s#Qb);DNREsBL5bw_GjhBeSO?_DXn6$%yo2|Q zIDxT0e`3=kY8MQR^o{gkeEkB+Op;f`j54^l?JzzBCr$%)C^bG5bm{L~(Dl&%U|1X_ z)~BV@vR>f`zKIx*U$w?N>g#Y&J&UXvrmrB9SAaDTW& zC?e%#s1fY?-r4E%3x@#?9a_i^v=j2L-Qss?|HMIzJQHCB3;;0sc0@q?PaJ>k7i~$J zZ~F!MKqbKjN4kWhcwVa^?FLXFHKrD7_bv&AO?)#ytYRS(X^w5k<~e^7dPbUtQ7fWk zK}s`XJ50GvU1gR1qC7U;R82%(O#L3ar`O)=nY}at!e#sU6EFUDBp7EL-_|}kf-^kk zEER)Fb7dly3Le(%;q#+qTeCUiqW}^vkIMn1Kl@iHXrQ>1K%nH@T+?+hdl?lN)J4Pm z{<3&b&sm%@Ol1!R-j;&0Qm|G6gq-gHhaRHypTJ|s#_ z2eQkEs}r&8BsKavef|E>ANgn>Czwpr8&`U=5W`5Kzd^i!(t-MqPt(3AjUQs5o zf_r2<3+0%H*gR%v3DaBOR*TD^COT2A_(gt|j5T)g$d-#$jttWgG z`@5(4DMzdIC)Oc*NJE5-vo)pfmGOtH<|fD>=u2z5r(p)@Pk70}6z)vOG@y(jxzKvq zC*xgod>8v6Fx$sq><%`E&QAu|Dl+q6W6ZW!Iq+a-6F;+Ud);v1q?bNSX? z;YLMv{IS;kQ5>w;>>u)68!0r;m?^~dW_nCaB7*S?;O@u*LqV~o(wrpE1OeM zJ-H~axL%x;7l+yz?-5955m1S+s!B3Q6tQ>G@yk$i1QLpIgBB~pL$&hNs3e3uW=}W- zq3EEGN6~?&ATt}|$EgZ$>{HA5iW&jxX&1y%gO8O{383GYu66Z-LP1QT50i_K8IKO5 z*tFEafC<1DdIe5+d`2CnnTDYPP`45%`+?!$7gfn1j*FosM#~z5G8SoXdql$<6_PLh zJfPACZ4rZwIwB-?E3wRtVxBhDaAoAB;il4w0W!iWCP8vry<*V5g-~0jYsI^da{8MgFHpj!XW1?hivo zqb>R|1JzZ@5!&l3KY0lyRG?M@W{}E>v+(=#vJ22Qm;U64dusgGgeTZ{>iOL<|8&`d z!`J5iH{R}kbKC!6W3ty~cqg6wxG}ROUgW@emV2C_GUUeQ(T+TR)Tk3wKOE3}9*K>` zX~j@WNHI%O0o?4B1YW0wM1I!%(y0b9aTU+N@j>weLXhB`zEPa0cK6-UQDR(fjOamP z+=5_=BW}!rmS+Zb(M`Z&`CX+z27CFuF^IhJtHAQ*s+FVL<_ufTs>{OX0PMYml8VBe zFU4XTyYa^{Ti}KKgbMh~l#txeF+m8Td4K_!z_1aEzQ9}@I46iu-W@e98y2v4L0;FljoDtH$w5byaZVP>8WTKhDrxAFOB0Pm6OfOrrFi6MMBYdsK~tnPNES+Mdm zIEv-eE7NmB@VATDO#(U1s=suVJB)ZM8`X)8PM$73A56K-j+PY|CKfu@GxL&9S(3S> z&_vuddKiA5#h{k{prD3T(<{#qKw-Qc~K@5`vuLgop|&syKcN<9R-9reumh~ z;&rBq`-#!|u3M{u)hX?OWwn%J+R%?6#ux9#$(Qe>)lmhIRCHF=X&=STn7>Hxebuy_ zYI;(gduU#?G@%-ua@#(2=u48!8?4=(k*IxIzv0>q; zc_GiW#rqd||GwUTT0-Alm1O;!C1n0LOJMwU)>n{_>E=b?7TEMowxJw?S|T)&WYgh8 zQlO?N8Yt*Qh0b59MIj2x%wiST94lqG(Bs5-jl`6B0WBPnK*H;~X5iqcv~FK0Kiu&w z2U2RYn3E!D%018^fi(-N;5VU^-)EWwTSJZ&Om8XbC2Wh8G^l}0aIXhzw#+R#pbWx| zhw-6xZY8hwg9`_!4bmHy4LIG!AQ7jnsn`x_{Yo+D%0ILyTp%lJ!zW^#pqXXx5Rxl?0JWeMXtwV=U`a;U;16ur!*9JHt zKSb356q4qDouJdUs?5x^(xN-n>W8=9db%4ZoiUyWo97OV4rCLCplElY8gfxWLAwHe z=YZeW_s^C0xlN$Uep~gMw+Qclt@*HNh_aiJMawj909yoM_v>zI{bQV7_i=g*=a`1=9tZPB?C1_VCV>Gi++j6;nVsj&IZqq9Ula zgdmGbCvRd*2N@R%8#KbtNPvJNDBs5x1u8oRPk}GGSeCXdMxbm8gYr(^#i>jdT7rNl zvD;n^DwW1m%F~<-sy}yrVxzTu4+sp8{sCYYc+RyYA^OMO32CDkb%2vGa~h1_g<4O8 z@`qZLt{?N$y0!uQMt!PfvfaiEAb=QLvcv@BX#yDh@jcm+1j9SBs?;svMV~^?k#$r6 z(_OenLit(9VRvYC(Wq6)&QTacc29m#jyyK6Rc5KAE3}tkGsaQl=hrzpfhZVj zev+gBHp0k@3t6Xp)Nl%x>iAkmNnh?xUura2?l8_~*p8vTV4Os+@ux=D=38)0 zZ(nKPAXwM?t{sQS$0XERsC*NQ*BC6Y5mnd&);E+AnHZ=xLmP#GvH}C*0A8KwUXBOw z)qK!l3Y$Ak1!EF(;)~UcF@Pps02Mpt{c!T6j3X-IMyYf=m6G9U;hbV#4PiKiWO-Hcm$hmohWG+g{zAub%J58hCiPt;{jbZM-3PC+aUQi^^P`{df6}zbUlVfCF74I3*dro>1%n!1+^;weh9Cbx`rI=Cb^qL^l1BMp6`zE~sED zgGz)pr!qsM_nMs0+fp|UBHE_UlOuA5aHRStA8<0FbMd@$GZi(ShD4;o?{05+#9GvG zdwfufIW*84Y3~}^er(lveUIRq&2g*wkq9~ z2LQ@nA6!RJS#xQ?7tx+~!JAk|AfXC0sX~TO>`~L{OQGOZ1IAJ8YVBQC%&L+%wKbDd zM~u#5Z1>d4*Jm7D9{1aa3Y@IvRzX3 z32K%P0yh9){7t-JH{E2k7k$dLd3f|j?zmb|+Yg_8t{0)^v=G8@ezz0Bv$N3Fo z>r^^+g*xr8p?@FX&!J(f{Eji+hQxepzvX*vbRA5zEllklXzg9?|CtdDfwzIVIKO~_ z+pxQ_zW@yf{5ACN1N=GkMIj}r=-aTGZ|%2iq>Z(ymBW9IeSUWheerAXe4XJ}w(WNKyjj&kSoO4Lq0Z2OtQDDaOUa&cl5d^Cz`8ujf$i0`Xl4+|gPp5kgTHoUf(Yxb;xgqfADwid6+fr-?D%Wt9 zaxd1gzK&(Djj?iaSUMMCosOSa^;mXzHCQ;0z&bBEHLTdMdaXUStlA6sS8(ivT1|30 zL6&1#@83%Rx99U6!hXLwNCazQ9lYt+;QWr+31}w)d<44=+)}L3(}#GZ$=am1wo59p z$tT?^28XwJE@e5DE#>B!rv26P_4+it^8Dgt|YXnnEh zkyGW*nrD7IUNX+~^q;W4?fCg~p@Zl7_F%;rkLUG}Bl@(e~4xOHCf(;b+7AXJE9N($%M*n zCT}hnY=(W-L%;=TDT2y!73Y;4H;43Ku_g9dt2xC1%{`My1A!zfI!7TXe~_byD*!5f z$LE-@5VZ+OkfWTLME)dty`2&#$(D*@@jXb0;bSc^{w4O8j_)9zjJas!g}Um@FeE@R z>%qvKGP-KnEbPBbzb^^UUr&0_@$L>6zF37l-NH36xpKl$ z4d45D>0o>f;WJa5^OqBMz^0D7^Z5kzB;rKV&tAaPt_m%%WGWZ*4QDRWDW^8`$cNZG z1P&%FC?2X=&U0OTdk&>%*wL!!AfU7a!5nX9y*3V!KWDqy1G;xD( z-U#iamF~xh@x{`ro0IH>!X8U;W7xX|+?aN*D`9W@-h?bt9KB~?z65tl*%JOt* zIk9LNQ5Ku{7Dc0*&)3zmZqS}dmr%9@BO28>*bCD>VzhH#{CplB0h9 zo!GTO*dbQuKv-h2js`r{@}VINx3+BN+vJ{W$=5l}gPYqp-|(GP$ZRbdNRH zj?GPsk5?^Mjml`WBLN9gk@0OB(ZXUWU=q+@Vu#qN95zOOv z@8;@^wU5ZRdPklO9mjj1tS6tk_w4gu?~kWRpTH+(@mAd~{EDg7#bqgVicCaP1p`cn zQxX-cQ!$4|iU&~b!3rJ-dD=x;bose6j>vcq%Tl$Q2{Jt|b}~3-B_eG;;U6D|yFUd0 zt9=&-bKQ_-H08A%W1y8|EHi{#5vs|C}Okqjpt@r69ct{jX| zy*%It?5J>{C>{59vr#ifG7Dab{p6`Yz)3D^8$m4Go~>5Qzax9zoH)9(!6Kb($-|CYtTXN@N;} zd+Nnh`_<|cv`K+)VZx*m;=a*6y*f|BWddw}N<$7nR^A;y@O5a!Z^S)ubJ!(CW0ri8DFv4hI^pkzK& zbS(XREVu`HrD5UL?zc2m`7crBC=a(Wu1v6c^8n38*j#pr*SiNb%#! z>cUl7z$;|ss7f$(vg@FDU1^pe57C-~jWr73k2Wn)S!s{~1)*5zNzO@~e%9m10kZ)o z4K|2{QGfPP^|1^H0k|IRjE0*1fOozZ!3Mi@n^k<~u7zLcGf-X0L<685pMb8S=}vB5 zgzp)QGsBugeJ+?1M$6#0DgkC0Vgia8*j1R`tgVNq(+W*bUJ=5el}kkEho1Y4sk5)W zUs?}_P7d!SCq@;7j&LX1Rwh16!_|rq;AFt%UkWFF2NMxLVw9yJ>91SdT6{;xy~|a! zIYd-ud=560MC^=vxPnFF z3Qel(uoKIZc0&%>jz;Os4^JEzTUzH_a9tW?Ll}_UfQe{#psL(g;t@TE;IpPY0?V|5 zu!PSbJ#>LvHta5hFd`Sxx}>iRqmte*Ojkw)ao!Ao`Wo7pvoOO*Cc~IXpG+b3zR=m9 zqX%mW9%xHpa}-++Z0p=KUQM&bvaa%bZqd}TPIiOmdaQANfSuJ1A!j?J(g`OOL$#Bw zRQ(a}@vW>FulU}2oFkW2b%xf(jc-R zWh>*F@~s^WxbA@{N?_Enbq|vAr@(=w^}1XEP8FX^JT<!$>C3+PrZB}2vQ)zI;6y@`9P1?;c zOpcsZl!ul-QPPYPt40JTm4ZKTu4Fj1V!Clq1p(x z7zRjQbBJ3j(V9MUH-pN+j{?(tl?;7gMck1h%nj3L8T}-XN``ur8D26Zi2fztnzMP} z66i1x_PVVX{Zr}k>tY`llGd0X97}DNn7*{8(XhuMN8NzvQhlJ(B9fkm|*i@A2oo=!9ujRRnq&*WdWJeTSLs{{PVxpu#TH86F2bK;H|e1Q`RdR!=+%I$zh zPcmTmBCZKYuZ>pg2f+o@djA#PKa}K29DH6xcB+dC=UJw3G|Pj}uSAB?&Ghil{lO@zD;hrBZ{Bi5O_kMi~VO9ess zqiv8PoATOjxg>(9v}HiS_ms_|AEusLZDCp>$66Rs`-D#+M4RM02bLHPSq||!h24oP ze_k)tSf73M{_NfAdDlm__HunKBg5@-_xwl}_4=#o=J)vO@5t-DekmlC{b1rP0Q|Qg z-9gvR*wBI2#?CD8%dcW0p}TZH2Urjo5QmeX1QC1%b!6)JT9ST*Q(7S*2ILmg-B;I+ zliG%3TY`SyEdLdm*}S|$AudyzqLHGUSmTeiS|qOiyHQ;aoq;~7sSiV|o!XvY>Sq{K z`Ip<8m_RNIMUfzuuc5N(O!j_G`55iCpHp;CUb^R0K+HgSqKVYKAW&^IQz$F}n99*Q zi5=%;JgQ4o#yAM}7pr!4NIof?VzIR5nnRMO;yO}Y5I|MoHL`#2g{1&R%gM9JbwP`( zI%il#GJu`?mAm~N^WWNdPg(4>AHM3nX`|{bt%LA({bym8gSEAV{U4F`#ogV%2gBq; z6BB?)U{Li?vm`?K#h+$p!9MY-mMT~l0qX*$fPF&Gp%*Lb$G}pU=VW3!Of@#)HH059 z-pxl%Fd&V!E-B3nr(-Ml6(|2L#h>!U=?}Xpy~*YL)_#-E*;>!+Px2mTW2_lf@!2>^i0`p*J5 zus5;(w<0#|w{YK-A&VyP?cSZY_MRE~N1xwnyzKu!P|)=Y_wSPag&P7u@C^gRL8xZ^ zTV^Zit(FV!Ul{&+D4&s_A%n^HR>YMQaAu>Gs>9f=rPD{snPruVNeN5xD4NLFeb|ku zN@pS&VX3c#nO1O{ZJN56CzTl%DHUcJsU6hkd8D$x08JS11dx(a!?efx%Kl323ov8u zzB?;ZNrsvk*{{Qp>VqOhvETf8R31mU5qY4x7)VfO=LJsEj!>dNjWLwx4!EU?XsqWX zy{aW*2?(%r23se{eYdOqVhefnXuf~4A?RnwCF!a7eSWcue$#y70DxI-$Dv zf3%pn%eN%DAj}?hq1>z`ct!0lVMl(q8TtI#1zqHd$UWTJp4sj`JB3Cf+TT)bQE73b zwEgXjCTM=)jBROZ=q~pZ?*d~oGEp%DrvgjjD9CZ;d>kPr-~n%PcQ=b)w6(ja%fkwd zVe}#{l$#=aa=z)4!Eq^ZM!X;@MIR#Ue zpUw@0mTm9%TCCOx9Cxr@I>Sts;3~l%IF-&nh zo$#$iUds4Ias;99X9*LW;wl$lw~r)FWshuToVe2 zwWl$*=hE}kXg8Hjx{b#AE+%EHOQ+_}dERs0zuWa+77qaM@J5brM*gqQ zdvWXkUaR%qODS+TaOv%C**8jke;oE#uRrUU{&4vJUsWvqqLJT~@Rw2{eks+i{|3$A zO)Va8?L7(mhkE|1Qu+_={NEQO{SxzcVg3~J^mL=<^V>tshPNc``^NK^n1AtITjD>9 zkR-aD*^-jud0j_7cL&lLr07;7Fw%+n=FXs)Wwq1m6JiFF!_hf}PBt|e_G5J!q!wds zjC@zGxJ7Z2)+pH$a!X`@Vn1<}&RlzVeM(orhQmKOrmB;m&~7hPiXVv zD}1!_XBxGHYVbQ7U*POD2zwe|J2@p6GO|r6V);065IDAOZ@nSKgM$t5t;q)U{iYjN zh_>#Vo9C?a#jy6c=FRpv8vU{lVw$Ds|+QBNew3 zcypMe)^9rtrTgk7HCix#4bMH;l8RJjod$O@k%lSOuaWDYgW7)v*hf?m5rl7C0=`rI zT+8AKoXa6>3PmIa;d0Fe_?e&kk{!XnwMx|ALOxl9ga;!m3pd7x6M6D#_5~`v;$ua_ z&Sr^+qN23;kKjXR(-vAwuUII3CsXUNvS+enf(3f~i5G5E@}rkU~P=%&#za z=)oNm2PZb)f`TETAPMezam5p4uuNO6jYblb{1ToHrya!a5cDS~hBy)ZDYu@HCwdU6P_9 zHA0;^voHm?HQ3O$Z&+{B6?d6%rD@ftA z!H$%!R7aI;f}bJsU_S4yby9~1JU_pcabfPwZWU`;vLs2$5z9*?F^Pq#mBqT>;2D)q7m_)x4IIQb3ED#dGsyf zMdbk6MODyHsZgOL5;3xmAIAcSDTN;)o8$aA8VDN^RW{cYZFlHgm`pu=;3-`tPnQSS z@0N!OtY*wV)k+HZH|C1l4yvMcN2!W+H$@BABk%1&Nl1W3f>*!=9pw~bVHTXuN&0Z# z`4NB1!Ic2Gu3wbPf_kn~5T7w@%ArNdCrnECkZoY7M4P1aGplF1A653!3-+5q?}=D~ zY_VD5S@N=#L=OItYmC0to#_QMryj8L$~_35l6c2W{yvqbV?L+Oregs2JT$sn!vkXJ z!Ud`%gFV62hm3W7m{s>LN%V0yhh$Rboq0cWeNkLn<6MA+eTMzkSKIfPig9qNM=4ES ze24Tb#xCGVZ{b*;tc)jubj30B;g>_;d3^)?`3a;|A;O9X(Ze8n<%_bc!gH=X#KQ3+ zYTCKkUXw+PMIWsDN0*JjA6wFd?Qv!^plEvcHWb}OBr7O|4ID|9QS@H9cR9sC>Iu_R zYw5XLT$-COd9-*k*SI53wS}E4;gg^x((FyX82huX#e+8kxuj8L9430{; z7x}ij%Wvm_KRx=Nl|xeIOS}kN1M9C<+uMHW$D&l_9_IwM)BK`w>tJr=1V5tW%h(cQ zq&i;SUX<`%b)yN?5|_z;C8glHp>t5F&!06@Q5P47ffVkUo}L~(Zk^@kW?Nig=N)*? z#ZAp%FIU3`*(2wc@TOso&Vg*%6IpdAO&n zLRjs_zS}Qa!<5-GiJ*<$hXUN<^I=FG^G631vEU5V0^{ge;D+i_=Q=Hq{8s0J8GKEe z^sIwAI%#6p)avyKk9fiHOaI*DHbNmT{~D-AihJXELxl8`#S&%+@6HtcBS*W`~AY6E>G;Z0VLpgsL4M zBJdDw8=002yJ+7Yw;z?sGUw5@OtaE!6q91md)*ZJYSkPwa}Dtc{hdBAe3tS)`dW2*7p@E%hMvEAQmNQxG&$% z*0iZnk}Wy!__uqT?#scRVHV(p z7T#~}!y-f#rHnI==jt{l3TS?DNei^X)r`i7g~$Z?A+iV5i3#e=q_UE)2%@xwZ5A!m ziO_^3e0jtnFq}`lMwKsv3uLOfv1Qvw$~7SleS!l%TF+rA{c&f^~sq(7`N@ z1Q5z|1&!zz+!c0 z8cz6lfQv%o=J-oxC28yx*EdBEV48~cbGuo$8b>^K7S?Gs`!$7}U$15%Di2#GlJm^0 zb;S8gIlGd#*X+Arrxk|DwQ%I4rs5{8+!EQ@tiPEoO3e-wg{R4{+jc*Gt8=|N?Kw%3 zVddd@b$h+JeSA7QviA1!Sgy5OU%mcGD4rT=qi@&feE)xZ1epPt;O8(!c2 zwkP+#@%4LI!@u_CKgxsJ-d@&24m1{X3Fep!;NukmlVc_YfeF{2?gTZDVX5_RZ9_)P zg{EcY8gh0!onVmev4q*9Uhy6Nrb~ksz>4WWHtCzTzm{5uVit26eTyyo;hT#RCC+#L z8G#2>4^xeBiII;+s)3r_r=scxLLzlp2{!AUW`SUz5_& zb0vU>hJKInm#;VO=$ywvxh|FY)%xBJ3=FkR>8%w3V?&7dud<3Plq!Pc~wWz-V zdDp@3NdMNsdrA#BU3`T04LkK)dw6xU6aWD7eUA59nfFOfQdjJ9=#dA`JfVW!5s?V#b8oFOb?z4VBB(NWnSC^# zuA%Gw)ZiGhoeEaE!o^1(GSfYt#|aECu4Ah%Lc^$c52jKVqCOUw_BPl)x|=>fKIm_1 z$dpbJszvti7 zCVGTFZVo=^WGYcVjklCEwjvv*>nt?r6b=9p3&V5( zaae#q&iaX;iC|Od??q^m>(VX-wAl>eJ{+QM55{6k-EEeU#5;qNPt-{_;Ka500scX? z#a<-Dl!Xr+JVfWYiyJ7brGG1qcMTq(W5}Hsojq?})p@OPf%g+MhR=dQlm&c}`Ls|k ze0*t%lYP)Kf&qv9rmpwt!;jg^tHoP?&52u}V2~FWBIYwY;3&~Fx(4qUZ_^JnXokDA zN!BWq8TB>DBs;esB6r5W~09Ce%=#_Uqtkf1cR+`D_#+S-Pjt+!;%XZD(F@L&c?MOzPnJKevR}iaBU5D z_a)AL_zEoLmr|>&!~=M$IH)i{d2ckKmdT3&-*D%W5TItn$Wa$XhFn%{E@9ND$~~!N ze&mp?S*@_8$vDf`O1$syI>d)JBLOFA>y20%L+3i*-(Gg;@3kO+_j3gIF%MwD-xRa4 zC}Ba7YPLkd&%i7dmH3;fSxhhK0pG$6Zhi@}=oeoO<2vhpsf zd%tQm$rSfv$>r!>K8lulQU)*?WFXpQ@P6`)5*fzDcVsXxAx?-gG$E-6&kc( z?DPA?e~a|~90jr<81v+f=5wI|e!Uy+plfgbix`wAWR~cW+pkmv+XcLjy9olJmtbvm z_XgQcs}6e;PL#L7QtP`HP0`$V{ecS^O+RpyO)D1N8)G(bUC>dJ4Mk zw4S-2xyxu{yL(RLD&yGmC2Io(CU90&MJG%AWF1*n0XDlY2B_*NYCc&3Q{0K4#=X25X_`apKV_NP=ePW&@IqLdG-?UNQ=%;&E6qd)5=M&p%jHsa!K=+t? z;boBQE=wy*&cFrsRDK11E)Hzvs;ep0*e0CABBoE)eYy0BCVMePY`txJ)Y24JiwvpA zCV)y&IFLd@z~Uif5l9%LsERZF(5n56HslrhB|{rEY`o!8=rseU%|EdiEVa#!NHGuT zY){V{OQqf8>fF!QnkMXMmx;Rh0CU*cl7qi8A6+3!`^)M{qx+%tqct zD_)J9=V07&uV^)N&vDHD#N;ry9bb!VPRzdS8cQ+5=}pX>F4h#aH_OG``;qi|-ekF# z^LqNrYJWF`zfI(QC#3JZmjZixVlY7TPZN22s`Sf568WUNd69$e(sNRJ^QYwbKO--@ z0%@jY!+aX51)k=gDThwN?ILQl9dU$N?dB7>88YV}=?8J4HaTduHhP?T@t9n&%xP_+ zPnj{z1SR9X62v_EB3b!#e7X7aK0X6hU5?Sj^%kkPa%<1^IG+>I6V;w1IA~9=xAmu$ zUM0wAn*GNbWBm%ou0@ECAJi=09FD^s(^w4g{YonW6-n`N>+YTm?bG>2N|0ML0lA8^A|Yt_T?_==Z6IJTq8;!csUn_GQHxuLde zhbGh}eT-UFPc^XntgE?`d%+>z$%adol}9Phs~e{Zs1s)bm}TCY#kH7R&SIqF7+2(L z5ZCzD27U9)kK^l0KIL3M0FhKMfZ)%Q1I0*SXE$ue$b}ACGsh|rq_UM-Z@==)s|T_% ze5>|D*vU4!J{P7U2DfLT3MndoQL}a9lE;RK*_^50rbi*e?<44=02Z?qwM8%?LoS?O zGVg=*$ixN*+GeYxVV4{@h}nwSiuc`S+h&8PMT*iV(WxZaJK5NIz6fOo2gqZ8ziF&% z%bz*;*AIBG6Tf|h0i`7EgLjMcj5Js|{5#|QZXti#&hN*b_oq#c_J(%a|EQ$?KRibL ze0#11*lwEd|3<15+<*Y@UufZ^Yxm1YGuEuJ2Ve)*u2j(7zOKLwVc3z{#1`IWPn;;o zfrOrbI2me)E@uUPd2QQ1J~ z_9|yb)9Z%aRGjl`(=^%n?$E^A>Wc(kU)luEGrJ6rcl}MJ>&0{pp7v_n^y}BO=^KOz zIvdAlx1o_e){cv`Ii{1N{?b*?tLc?+v`Or6h^NOEU|cH?ph|}5pZjAZ_L&kvIAs_ zoq0C?)R2J(7x#u~xC&d&>ecN=Cl3n!=mj%KC4@KeefT*| zEx|VqKD{1rp@+h~%alkK6CVd^iUrdh{~KD2O@$J9zx)_^ilm=dSQFQGV>YI$MM_<+ zB6&(BHIpt;3ITu_G~NqDS2O996himm4X z6d{*_I-FAR@kNXwc6>7|MDBu0tbz%hLUO}nvLrWN`EWU(5$eVUD^{CmqH%qYbMpfg zHnXBhhr(tc_C4|IfQM)mtOOlGvUHIT)-Y!bq|Ea03;7b@OCIwaZF0+jZIbO^%yN+F zC;&}VDaj;nOpn)v4YZS|*bZYug3!P_5z9HcN@eW8SyMT9wa#NfDHV%?@Em}YGSA_x z;+^T^XW%KtV!HDn3GiWxJa}ixy8W?Gw2B}zDe9qgl?6ckDc;5$I#?H$kx|ok^y@Us zk1g=AHBpidIYgT2ip-HtyjCNFnfHyS%X>t2v>_^%L8#vKK^CAmypJemUc8ASE|w7! zVHJNA^exVJ7wR|=2+6&;`rbdm{fxb`zlSvTO-PEpjz5#T%rVP>SUlr--%8LPW>kv0 z!TK|QU)SUp>>J3PeGzh%7<|bD0miZ7demaTDO>y-vCVzq4>IVYajddg1*F(p8)marW$4_Kq9(%1Fh`fx)ewsr^7j&2F#+k%85Q}-nvNnHd z9jjB@LMk>ct)D3gdRkoOJ%EURthI8;b(ATJiey8Vo)ccRn882bjeR7xx+bz!P!nau z8;B%c_nrDeeq*}4EwaU;G?j=rK>FrBO5W6kif`a6eI8|K@fx;&SfE>siZi=_I#c*U66s1Cz zbFOc7cz1wGxHHm!?r(og4*XEs{Pw$Etfr}nry zCL5k{Y>sIu7i>2}mP*E&)1;&qyO=MuQj1%x2qq>HJHy_)9LcL?uAz=*S)9Shyzv|} z2RMa@e-pYn6iL2nG_&9~R{x^IXUZ&u6DFVe;p;N_210&0Hmh!^xhTs|8^Ps)x9NPy zSb^9C)A+ME2|z-9k0)h;q6~{=?xd|8tV8Ol#a+cs{0AqG7RIQ!KB|Yt&ors)eW-O*aLdt1`$~fW%J{1$`E@tbak+QlqoWvP3L0Ui< z9bsED?|d1-5m(6E%vd2`jZ4X^7af*VuoxLGWboKiO@1^uI~KmJC$1=`WVOwrMp7gAc1j*aflAQVT(y)9FTzh1ktqnLPn; z_w?v2IsX96(js|41HM|glh*Z(8!3QH-iM zelG?)Rhyu#5Gua1rrS!V3Q42yUS=woxGw>}o?4 z4&j4{s`K&xm2&0bP_BJ=W@IphVx~iNiY$f59wo9Qd!@mQEy83;*^5vjF|st-m$D9H zk4y`d3I~TICdN4RJE4%{Om@d1p-DKi_Zun7OXG?)&*Y&-=d5^-Pa_O(5+-7DD|0V7uh z1r5mw?w6|X)UX#8A{4HH-OA4Nl~>$+7vZIn=qU|vxa6l)Is*Nz|35}I-8MYwMAxmG zX{AWkx@6=ut8`6D2WrLUYVJI!l~N?>lvwKS*DmZ@<=AVYb~8<(SQ@I_Qdxt73gKeS z>jTCfSDkcip4xNPrJzi7Q){N~P&Ub1Vl!ld5Uil~NpdLR3!ig9jh!!E8+9fTJKHT@ zThZoWY%b$&qwu1sTI*bBho3{tyV|Pn|HRDty+}*Xu%PK!KIPj#_;>aIIVQQH|EVrc z8R4tzgvlHgsgNzohU^ZlargL3jb?Y{er&D$(3Q9___IyOdg0G|lAOehE*s6ku(e5M zQn%>C#aE7vR#s=(NxC6#tGy3%9COq%mFT>0N^Tq;FB_qRz^uzn8Ys{a>GZ2pLv`wP zmq&0$lpC2=A@&IML9OcXHC`JKkmB5t^SD6O=~U{&GKGC}qkP@pwcsf+)sK4hi`ErK zuD9FkP<|IXqv;ZA@o^mLveo(K+0a5{3eNJ39-}6JN+NFcctcF5*-Jj{(DkT1Q}CzF z<4*yb%g@b@G%dQ16W!@swo~t5aOI`p5Q5t9=r$+!>W^iU*&NACBS8kiDe{ z`=pKU6RR_ggttenr#hsnJsg#taxe{osw??jj$Uh4jI7Dz!-~#L5WL?`x?Y@7qD#0& z+s?r~Yp2S+2K@X6g(e5{_=vLO6dwn3(kpSF-{^*=qT8E&b#uGVP0CslaG?*d7K!BY z2+d7m6V*b8rDCY3!L8himtyi@o#8eyNyxshSZJJA4ZvZhVR8Qv8pG$@+<^=GTTUPTiPSORR|7$rirHt zQsC-dH`X@F;Yg^jSq?kXywMFUQq<$!A2rrRtHq*g4l7dA#8J;|9>Bqyg5LMCh?$ZK3ZO2=S~`_W!r z6>XYVOMlz`mEKi!6PEr$aN|Loj>1Q|lhDhj&7)0}-Q6ErMHf2D8B~2hDo(G7u+IAI zU_5cCu5l0UtNorF>ky4ekEY_aBB6Bp+xAKe+2D4^G);U9V@CXGwRtr0QsD1+j3u$( zVd`?{t8PM;?iF!`)PtHd5@Bb4N&~V!_vEe@Gi7tR^nt?Dn!C4+JI`OuY=6D&VvQ83 zLb{SZAE`z<-$M^c@OKFJ!D@}+Osy@Ft?8H#$dsv)+?N5jO%?)rI|UE@CBCp>I(u}N z=l$&s_rls$54pNDd&5%0?=lRK*Y?5Byl$Gub_&eT<{yo^m)jnOmLf>|K77zaZz+0o8fbXuP&5$_VFjT%1QBeSX!XPq|&+Vee4sJFcNs%TdMYlpYb;0x4>MQOW9Z=`4G7& zE?-0_Nj0A$ACJaY?|YC@jJa_|!;jf{E3B0>b$eiQP$E@+Hrc;XFP7HqOzI@aO3JMlo(`FL`NL!|vitJmj`6uIY z#W(EX={AMm5(tDm;#Xy3>c;qQr;UX$C#^FPBd6PA&39OZ9i|3r4?`PW>y(- z6wi_O(mjcWDiafKJ>gX!w)%DZ-4MN(@u|3{v{2?su% z`1J`1Q2qfl(ZIpQ|65{$!nX4L+U}D%(9c*j1in_xKYtAZN?^;eXsE^f$z}ez4CQV2 z2|$^r%n))+05^2W_3nrzCj;1x60p?-g2iCL{NflKB*5lo0UP-NGDRR*EXvFiO%9f2 zNg$hox8om+1Oiz!)Zt&DSgw$=!K`%v+vNc&QXp94hpq~POF6ljz+O^-$r}(XCMV`y%*C{NX<4fSwjttN z9g%gbNS1_Q+=+kcc6jyQll(TSifc+!@KLsFI z3oR8lIB+w7?GiYjxn>XpP=Q`?YXDR5@>O6bVamMOmL?GZc3A*3@ahj@ zGqlRCFtEFYz;NIqfLmFBN*x>iOpXm-Zm;1+gS$>R(WjXO_@(q$nqSyx-km8+!!tJ= z=#J%{6E;Q=!mBfdov+pk<`>%}uci<-d|?H?`XS~muV<$_t;m*+fD`5=uV;@at;9zC zdN%_&z_M@78|?s7wZX9?^4i7#3a~zv^GZ#CC{|CMC4vX59RbA~dlE6K>;!mhTtBnt z5=64Wf$CuJsvQdegS9)HBOlWQgI8@;02nNK;e5n@*8ze5#~uYP>ny(+ur>*4T`s8% z_`>s&yRfH?XF`|7FWe|_O&t)huu<;;)Uuof3{nIAI*1TxF~4+8lw2dXa0 literal 0 HcmV?d00001 diff --git a/aio/code/aio.py b/aio/code/aio.py index 0674425..45a0461 100644 --- a/aio/code/aio.py +++ b/aio/code/aio.py @@ -459,7 +459,7 @@ class App(customtkinter.CTk): func_dict[flag](path=args[0], w2t=self.write2textbox) elif flag == 5: self.pre_warning() - func_dict[flag](path=args[0], hr=self.hr, loadsel=args[1], w2t=self.write2textbox) + func_dict[flag](path=args[0], hr=self.hr, md=self.md_at, loadsel=args[1], w2t=self.write2textbox) elif flag == 6: self.pre_warning() func_dict[flag](path=args[0], hr=self.hr, md=self.md_at, loadsel=args[1], w2t=self.write2textbox) diff --git a/aio/code/automatic_test/do_brake.py b/aio/code/automatic_test/do_brake.py index d60c955..5310abd 100644 --- a/aio/code/automatic_test/do_brake.py +++ b/aio/code/automatic_test/do_brake.py @@ -1,3 +1,4 @@ +import os from time import sleep from sys import argv from os import scandir @@ -7,9 +8,6 @@ from json import loads def traversal_files(path, w2t): - # 功能:以列表的形式分别返回指定路径下的文件和文件夹,不包含子目录 - # 参数:路径 - # 返回值:路径下的文件夹列表 路径下的文件列表 if not exists(path): msg = f'数据文件夹{path}不存在,请确认后重试......' w2t(msg, 0, 1, 'red', tab_name='Automatic Test') @@ -25,7 +23,7 @@ def traversal_files(path, w2t): return dirs, files -def check_files(data_dirs, data_files, w2t): +def check_files(path, loadsel, data_dirs, data_files, w2t): if len(data_dirs) != 0 or len(data_files) != 5: w2t('初始路径下不允许有文件夹,且初始路径下只能存在如下五个文件,确认后重新运行!', 0, 0, 'red', tab_name='Automatic Test') w2t(' 1. configs.xlsx\n 2. reach33/reach66/reach100_xxxx.xlsx\n 3. xxxx.zip', 0, 1, 'red', tab_name='Automatic Test') @@ -48,8 +46,23 @@ def check_files(data_dirs, data_files, w2t): w2t(' 1. configs.xlsx\n 2. reach33/reach66/reach100_xxxx.xlsx\n 3. xxxx.zip', 0, 2, 'red', tab_name='Automatic Test') if config_file and reach33 and reach66 and reach100 and prj_file: + result_dirs = [] + os.mkdir(f"{path}\\j1") + os.mkdir(f"{path}\\j2") + os.mkdir(f"{path}\\j3") + + for _reach in ['reach33', 'reach66', 'reach100']: + for _load in [f'load{loadsel.removeprefix("tool")}']: + for _speed in ['speed33', 'speed66', 'speed100']: + dir_name = '_'.join([_reach, _load, _speed]) + result_dirs.append(dir_name) + os.mkdir(f"{path}\\j1\\{dir_name}") + os.mkdir(f"{path}\\j2\\{dir_name}") + if _reach == 'reach100': + os.mkdir(f"{path}\\j3\\{dir_name}") + w2t("数据目录合规性检查结束,未发现问题......", tab_name='Automatic Test') - return config_file, reach33, reach66, reach100, prj_file + return config_file, reach33, reach66, reach100, prj_file, result_dirs else: w2t('初始路径下不允许有文件夹,且初始路径下只能存在如下五个文件,确认后重新运行!', 0, 0, 'red', tab_name='Automatic Test') w2t(' 1. configs.xlsx\n 2. reach33/reach66/reach100_xxxx.xlsx\n 3. xxxx.zip', 0, 1, 'red', tab_name='Automatic Test') @@ -60,14 +73,9 @@ def prj_to_xcore(prj_file): ssh.set_missing_host_key_policy(AutoAddPolicy()) ssh.connect('192.168.0.160', 22, username='luoshi', password='luoshi2019') sftp = ssh.open_sftp() - # stdin, stdout, stderr = ssh.exec_command('rm /tmp/target.zip') - # ssh.exec_command('rm /tmp/target.zip') sftp.put(prj_file, '/tmp/target.zip') - cmd = 'cd /tmp; ' - cmd += 'rm -rf target/; ' - cmd += 'mkdir target; ' - cmd += 'unzip -d target/ -q target.zip; ' - cmd += 'rm target.zip; ' + cmd = 'cd /tmp; rm -rf target/; mkdir target; unzip -d target/ -q target.zip; ' + cmd += 'chmod 777 -R target/; rm target.zip' ssh.exec_command(cmd) cmd = 'sudo rm -rf /home/luoshi/bin/controller/projects/target; ' @@ -78,20 +86,17 @@ def prj_to_xcore(prj_file): print(stdout.read().decode()) # 必须得输出一下stdout,才能正确执行sudo print(stderr.read().decode()) # 顺便也执行以下stderr - cmd = 'cd /home/luoshi/bin/controller/; sudo mv projects/target/_build/*.prj projects/target/_build/target.prj ' + _prj_name = prj_file.split('\\')[-1].removesuffix('.zip') + cmd = 'cd /home/luoshi/bin/controller/; ' + cmd += f'sudo mv projects/target/_build/{_prj_name}.prj projects/target/_build/target.prj' stdin, stdout, stderr = ssh.exec_command(cmd, get_pty=True) stdin.write('luoshi2019' + '\n') stdin.flush() print(stdout.read().decode()) # 必须得输出一下stdout,才能正确执行sudo print(stderr.read().decode()) # 顺便也执行以下stderr - ssh.close() -def modify_prj(): - pass - - def validate_resp(_id, response, w2t): match _id: case 'DATA ERR': @@ -105,7 +110,7 @@ def validate_resp(_id, response, w2t): def execution(cmd, hr, w2t, **kwargs): - _id = hr.excution(cmd, **kwargs) + _id = hr.execution(cmd, **kwargs) _msg = hr.get_from_id(_id) if not _msg: w2t(f"无法获取{_id}请求的响应信息", 0, 6, 'red', tab_name='Automatic Test') @@ -115,60 +120,115 @@ def execution(cmd, hr, w2t, **kwargs): return _response -def run_rl(hr, w2t): - # prj_path = 'target/_build/target.prj' - # _response = execution('overview.reload', hr, w2t, prj_path=prj_path, tasks=['Durable_Test_Com', 'Mechanical_Test_Com']) - # print(f"reload prj: {_response}") - # # _response = execution('overview.get_cur_prj', hr, w2t) - # # print(f"get cur prj name: {_response}") - # _response = execution('rl_task.pp_to_main', hr, w2t, tasks=['Mechanical_Test_Com']) - # print(f"set pp2main of prj: {_response}") - # - # _response = execution('state.switch_auto', hr, w2t) - # _response = execution('state.switch_motor_on', hr, w2t) - # - # _response = execution('rl_task.run', hr, w2t, tasks=['Mechanical_Test_Com']) - # print(f"run prj: {_response}") - # sleep(10) - # - # _response = execution('state.switch_motor_off', hr, w2t) - # _response = execution('state.switch_manual', hr, w2t) +def run_rl(path, loadsel, hr, md, config_file, prj_file, result_dirs, w2t): + _count = 0 + for condition in result_dirs: + _reach = condition.split('_')[0].removeprefix('reach') + _load = condition.split('_')[1].removeprefix('load') + _speed = condition.split('_')[2].removeprefix('speed') - _response = execution('diagnosis.open', hr, w2t, open=True, display_open=True) - print(f"打开诊断: {_response}") - # _response = execution('diagnosis.get_params', hr, w2t) - # print(f"显示诊断状态: {_response}") - display_pdo_params = [ - {"name": "device_servo_trq_feedback", "channel": 0} - ] - _response = execution('diagnosis.set_params', hr, w2t, display_pdo_params=display_pdo_params) - print(f"执行采样: {_response}") - sleep(5) + for axis in range(1, 4): + if axis == 3 and _reach != '100': + continue + for count in range(1, 4): + _count += 1 + w2t(f"[{_count/64}]正在执行{axis}轴{condition}[{count}]的制动测试......", 0, 0, 'purple', 'Automatic Test') - _response = execution('diagnosis.open', hr, w2t, open=False, display_open=False) - print(f"关闭诊断: {_response}") - # sleep(1) - for _msg in hr.c_msg: - if 'diagnosis.result' in _msg: - print(_msg) - # _msg = json.loads(_msg) - # if 'channel' in _msg and 'name' in _msg: - # if int(_msg['channel']) == 0 and _msg['name'] == 'device_servo_trq_feedback': - # print(f"diagnosis.result: {_msg}") - # count += 1 - # if count * 50 > 5 * 1000: - # break + # 1. 关闭诊断曲线,触发软急停,并解除,目的是让可能正在运行着的机器停下来,切手动模式并下电 + _response = execution('diagnosis.open', hr, w2t, open=False, display_open=False) + md.trigger_estop() + md.reset_estop() + _response = execution('state.switch_manual', hr, w2t) + _response = execution('state.switch_motor_off', hr, w2t) + # 2. 修改未要执行的场景 + ssh = SSHClient() + ssh.set_missing_host_key_policy(AutoAddPolicy()) + ssh.connect('192.168.0.160', 22, username='luoshi', password='luoshi2019') + _rl_cmd = f"brake_E(j{axis}_{_reach}_p, j{axis}_{_reach}_n, p_speed, p_tool)" + _rl_speed = f"VelSet {_speed}" + cmd = 'cd /home/luoshi/bin/controller/; ' + cmd += 'sudo sed -i "/brake_E/d" projects/target/_build/brake/main.mod; ' + cmd += f'sudo sed -i "/DONOTDELETE/i {_rl_cmd}" projects/target/_build/brake/main.mod; ' + cmd += f'sudo sed -i "/VelSet/d" projects/target/_build/brake/main.mod; ' + cmd += f'sudo sed -i "/MoveAbsJ/i {_rl_speed}" projects/target/_build/brake/main.mod; ' + stdin, stdout, stderr = ssh.exec_command(cmd, get_pty=True) + stdin.write('luoshi2019' + '\n') + stdin.flush() + print(stdout.read().decode()) # 必须得输出一下stdout,才能正确执行sudo + print(stderr.read().decode()) # 顺便也执行以下stderr + # 3. reload工程后,pp2main,并且自动模式和上电 + prj_path = 'target/_build/target.prj' + _response = execution('overview.reload', hr, w2t, prj_path=prj_path, tasks=['brake']) + _response = execution('overview.get_cur_prj', hr, w2t) + _response = execution('rl_task.pp_to_main', hr, w2t, tasks=['brake']) + _response = execution('state.switch_auto', hr, w2t) + _response = execution('state.switch_motor_on', hr, w2t) + + # 4. 开始运行程序,每种情况运行15s + _response = execution('rl_task.run', hr, w2t, tasks=['brake']) + for i in range(3): + if md.read_ready_to_go() == 1: + md.write_act(True) + sleep(1) + md.write_act(False) + break + else: + sleep(1) + else: + w2t("未收到机器人的运行信号,需要确认RL程序编写正确并正常执行...", 0, 111, 'red', 'Automatic Test') + + # 5. 打开诊断曲线,并执行采集 + _response = execution('diagnosis.open', hr, w2t, open=True, display_open=True) + display_pdo_params = [ + {"name": "hw_joint_vel_feedback", "channel": 0}, + {"name": "hw_joint_vel_feedback", "channel": 1}, + {"name": "hw_joint_vel_feedback", "channel": 2}, + {"name": "hw_joint_vel_feedback", "channel": 3}, + {"name": "hw_joint_vel_feedback", "channel": 4}, + {"name": "hw_joint_vel_feedback", "channel": 5}, + {"name": "device_servo_trq_feedback", "channel": 0}, + {"name": "device_servo_trq_feedback", "channel": 1}, + {"name": "device_servo_trq_feedback", "channel": 2}, + {"name": "device_servo_trq_feedback", "channel": 3}, + {"name": "device_servo_trq_feedback", "channel": 4}, + {"name": "device_servo_trq_feedback", "channel": 5}, + {"name": "device_safety_estop", "channel": 0}, + ] + _response = execution('diagnosis.set_params', hr, w2t, display_pdo_params=display_pdo_params) + sleep(15) + + # 6. 关闭诊断曲线,停止程序运行,下电并且换成手动模式 + _response = execution('diagnosis.open', hr, w2t, open=False, display_open=False) + _response = execution('rl_task.stop', hr, w2t, tasks=['brake']) + _response = execution('state.switch_motor_off', hr, w2t) + _response = execution('state.switch_manual', hr, w2t) + sleep(1) # 保证所有数据均已返回 + + # 7. 保留数据并处理输出 + curve_data = [] + for _msg in hr.c_msg: + if 'diagnosis.result' in _msg: + curve_data.insert(0, loads(_msg)) + else: + _index = 210 + for _msg in hr.c_msg: + if 'diagnosis.result' in _msg: + _index = hr.c_msg.index(_msg) + break + del hr.c_msg[_index:] + hr.c_msg_xs.clear() + # gen_result_file(path, loadsel, disc, number, scenario_time) else: - sleep(1) + w2t(f"\n{loadsel.removeprefix('tool')}%负载的制动性能测试执行完毕,如需采集其他负载,须切换负载类型,并更换其他负载,重新执行。", 0, 0, 'green', 'Automatic Test') -def main(path, hr, loadsel, w2t): +def main(path, hr, md, loadsel, w2t): data_dirs, data_files = traversal_files(path, w2t) - config_file, reach33, reach66, reach100, prj_file = check_files(data_dirs, data_files, w2t) - # prj_to_xcore(prj_file) - run_rl(hr, w2t) + config_file, reach33, reach66, reach100, prj_file, result_dirs = check_files(path, loadsel, data_dirs, data_files, w2t) + prj_to_xcore(prj_file) + run_rl(path, loadsel, hr, md, config_file, prj_file, result_dirs, w2t) if __name__ == '__main__':