q=hKfjg~7(|rcSuWjRRG~0yy0y7*vE$G|93Y)ZbZP=}r(;FPKWATbm
z{cygm7FyQmyp*8Fns5VF|7w8ok`Y&rnIL?`mhz?#ESNmj3boFL^cHrM|7pi3=h%*w
zJaW7i%~?bBNiRL3)CTl#XGGt`wl|tQHDSRIW_)_gf}88CSUuH-UIXlC+d*7ZrPDP%
zvqg(9SL^W00zHgV3=qc{QPs-?U$?fmlbTpi{+9)<>#R^!+Hh^59sKA}4es
z>^-B$pwA5uHX1Qyo(b_DGbZ+BY0c|wg(lvH&wsXoPTDbQbqK~~>aaLjj~kH&eDjcP
zC|8UKKV`x%+sxQCpTQ;-Skc8~Lv)56fv0v%XFuz!4eQe`=j*VmpB{EC+on1i@otI<
zL;o>h-E}h#ooshCc9RuP-?O3XU^}?Zp~$j?>a@Z8HF$HU7W{f0a+c^Z=RE_G3yiqm
z&xD2Y4mXmTv-~}`fUmcr-2ofAFR{ZpjvX1vX4c6aaYu_)S9ExGPLJhZ7*Oo5#YD1$cJ9e%O9X1ly^Bvt@hk#AE?J8g8^;27_l{#?Z*+VoJqIL
z$U9@fl`U3GDY2o+Fgw2Q_A-UC@;zEy*`&jrGCkVQGGI@k5z_~nuuWw~ciw{NF5y-*
zxoSnqVZOS-ayzt6mW;U5_q4b#vfJZ=9z7^yxNN%-CzqPAW1<;L23zn`jul5!Y*_e^
z3H{2B8DSg6Wz|txI`n9v$2W25WwNIRT)1h3{+tOj_nHx0WM?XaR?jt$TA?KmL+PYR>8
zM_E6*Qj2f4rmv4$sfX(W18(>-UxdBgMb<aKnlQ$84Cp(vGGcmWb%A
zzcpz4Pz&RaZEnPVqeuKn18P4p;-?S!+9p%XSToFmfw@*>q}nj?PaB5S*wO#vPzvW|
z=#ko(ZK(ek@cbtu##}I=e7_lAtzcX71S{fV@@xopup_2nPdMsXcv_FZ^?4z1(JK^2
z{GDmS!I&Pp*k8>!Ut@u0w-sN_Z!c{y+K#0v7T8IpP@NoXZNb(kE23{(@!*6Fjx~1t
zR>Z1=NL8&J`&p&EUYipBSSpSx5&WXbBjgF(@j)Vn
zhu(;9_7;=^7c37-MA^%?LbfRFDx`2>VYy*qA{X)e`ExNzCMGJy)YJ&6^o1D9iK$9a
znkf$N9T5}r^0Tx|Oi2{uD}@yH8$6g25gq+P4C5mH{`>EIPE7HLQkmdn=RwdZN+lvU
zUF4*qbW{kEHC-qZxk+NYG$JZ0gweDXQx>rC;_&stPEk5tOk}(jLW(AnX}K2PHJBol
zim6B%6Ys1j0yJxqca
ze@x_3gsoxdmMk})vdjNw>FN99W$Ck2^sm<1E85HlsBglUftvMZrMArU)YhEXNNi{}=eHIZ~^bm515#xtUcZO4ytDAhYnlbHB8ZI~kOU
zS=HBuR0#Df-v78Jmew+}88=tWF57Ca$9sY)nv#&%)EXf(SQV6<&@n+bxUNj_tI1MA
zQbU}~WKQxbo|o~yjOSIPp)q1;N|tJ7$IEbEp_NtQkm^^?{f8)(JH8+&xsmnknqkVS=Fm|a@NEFHhF5=maE9O0Q-aYbpPoK~E@BDNAI`!AO-b`ICyDXY@UG@X3n}r`yIsvIb}Tc7riOGiFD@yLPNass
zHS`Uy#Q3CyM0LlDO^WAI#wMv=gI}~EU9;B
z#kN~fR&B+U0xPO`EBxNE!u_7nioUO?xW*^6(06(t8!kGm_}p$q=OJpJX0tKhP+`TL
zEGyQhSW!RRil87XPCt{;+9qS%F&PIm`<-}LNP?lc$%+$oRz#Ip(R-2=V-l^nImn7D
zepU>+C!@#Ff68cSlA+%yW5*&H+jC^_>CQ8cI%363vK9MbMN5bkBfDAA;}035Ps+Ho
zOGeP%8W~sT%9xubgGrQ894^DNhm1~7r+T)r++Thwt$T5G!_}A$vDTz
zh>McpVU!WBlTmZig0VkYFlnC!m71L@?z7a*iiTPlwZ$^7g+yvLsN`p_%XmpIkZox@o
zVekDTEV$m+f(%~^;_geZ{3fCKu!K2ZNZ>wG)!lE|Em%Fq{h5XG%ElMoYLeQpF8^^DXG;X@TUB(C@N@)E^{#_mzaI
zwGy^1kl^B;P3Zy{30p=;Q2I+4?=NB4Um_|xRoo?l3Nh>VN=UAgu)9pc2RRZdSP8e)
z*Rz4z7qq;)gqFu5#C8!OKZqE-M?}@9B0@h>X`itNB$RLxq97rT+V{#fKM5(1M5Ne7
ztobhyeZCTLeVsVKpc64MPlQIM{9F>m&}3)k)2tGHd>~?AtBA8lMV#L$qUXmVc9x1*
zo-M+qfuoKF#E57L6R|l^#E-5b5^o7$JDizUKU1r`T10TMh_tC9w5cLmqeOJ?Ct^`|
z5pVt_AS~drfZWppuI?A`$rb^heJJ2|rBi+9S`pcAi10Fqxa%Pz;!gpae-kkMn1JF&
z0YQh?3mCmvfN`dPfoTG!jS--U60m5fifc|AOAY&e67Ylwn7>tkqz29@7I6AK0fnr9
z)EEIhvcmAt3bdXRsr2d3MhX=z#B#ZLwu>TuRi9{
z+QDPl86FD{@Yw!25C4yOd{fS2U$HZH|2YD9y?|ez^QilSN8>pj&kpifv4h8?wLF3{
zD|mb{lSkx49=FHwu!BdBa2|9&755z)B%pp5kK^lkgjX8NwS_#sr}k*>QhUNa4aTD|
z9w&o&T=U>DS1#NpNn6?RMA%i}(^$MDSv9!-OIcn9&Q?8YPY9tXOO!@?gq
z+$J3SYqxXAU&~>BC5Mx9IF#qBxKAF(Bes*n)=L~l8#8-Ee#^nUg+t?N4#^8Syj;M+
zFP-YuJ(a`mXb$6sa2ROhKm|JwzVZQw71bQpe8Ayi7Ke!vhv1PM^lx#99l#-|E|9}u
z9S6q)77s78FrH^oc9g}p%}%^=6$d4PLq#7BnZ6vVpR%xDXOVw_#XnkD1cmKmkfD35zG&S?piOV(U^CKfTXlXpV~SwX&E#mPMM0
zMbQuz2SZpOfW=K;6?eOLmc{#2qb7rDG*paXadiZXX%Q@jQ!HNdXA$qpV)>s80y-G@
zHl1Uz;uwS4ZyA(*<-`N>S+p3_-TCJXf^Jid-U@>^Pc!)NAOnip5p-q~gIzTYj#Mys
zUc?|Rhry%q3=EPp_u((I2;R;haXo`ARSZn?894G7+@HvxC&$3kmc-yp6oXmeR4*SR
zgP{QoXdQ!ZTvXhh`I5oZQN~J-5ey;+Gsp@tmQp)347H=T-xC@)ZqWF%mBzrcG)j)p
zaQ&9X&h0c(w>Y(Dq%hcXoyLGmG>-g8T}?y3fX2l_8sBHq
zIAf#XOVhYMM#X(s-KODQNu%cnG??kC>O@NC!P9tU6piPgPPq-IF>Cml?h5&G^06jC0jy++1jep@<3$m}bV^NoFjT
z%!nOlhB3j6y)i1Sd0@=%t~HyHlxRl7J7z=3Wl~r1|ag!&LW0ck~
zHDU^JT{V@gdy+vS$7hnWhqFlbpd8|{JeO>EFpU`Aw&aoX-{q6({bvxLr8CLqyM-j0
zpG___%^`)MbBV#f;(hY@tq(}(zg|!YHMB8VbB5Atvea=^9cf0J#zE;cwUpLgm#GO+pZPv&hvI1Yy*SzKsOczg
zSO3+1H94Wpk>1s>`xUl3BL2JIbX0bxdv`ci{*V5!f97R}?eAV^d#o!o)L)oFLQ*rx
z`eW~rU}TZiyR(UZST0$%VH)ua$|F8yRr$oF+YB;y?o9Id?em6$jM?N)>l~8B&Lvk*
zyid|&i^(0!JQCh>KFK^gpBT0+D6N#F7;aq1AepvIa;+_kOr4xVE?>(fld`9i
z_B(kbt)PGyl!r5jt*DS(dOnNDC3DC{_qjw=tM-deF$qhYM_jIZQl*BL`Q*K&CFHfS
zrQ~Y&1*HDW0y5>pg`^)_Mmhq^$tJ@u1
z7|B^%n3bpm=OQXuiH&tGVpWT?`2S~?=o*)ejZfTTT`P~itIX4y>XaI-R-<`GW74|%
z_&COEUA?^>N`ThY%j?DD>FH2sys?_pUMNyR={Iz3}orYSJqW
zYX0h(bk5Lfx_;U=Kbt8qCP5AJA~CyerOD5pS))Xq>T(;_(q8URo$dKGv18i~q^rv_
z$<4YLn@QW@%s0*%yCb2dJ@PL_f9gdlioV6v>qW@+gb4M+9$5Q#o+^K6kVzL^)vS#!
zR`p*bVb`zx_t6|R&aLlOnsi;);ne6lw0>oCFT1wZ_1Uv$il(l)UMba?>Rg{cf3C!7
SO=cxp>+($V|G)qB4g3qw-%CvZ
literal 0
HcmV?d00001
diff --git a/src/dual_arm_sim/test/data/red3_on_floor.pcd b/src/dual_arm_sim/test/data/red3_on_floor.pcd
new file mode 100644
index 0000000000000000000000000000000000000000..6aa1b943ee2ce30414fb3cc16aacfb4239c5e5c2
GIT binary patch
literal 4096
zcmeHJi+fDh7N6u~jGRe?7$VH%oMbXHnMaU^2D4Arna7z|LL@;{FbU$(gw!LHRHNF|
z6|F}TrQCW)6(!nURMi@n#3zcTEvjg@ULmehk9hT7+)4cx_v=~Tcg}bA`K{mDd#&F(
zdu#c=!yHb2PXE3cd@?_*eCqVsyrZnVVj}M>o?XmOnp#%EPb!}|t#~#&Qp(Hs<_zV7
zP}b#@vYq+-Yy3QZK0kBvcsAcVTH@1R7(4vsVG{3pVXPx(#L(e<$_rx)yw2esK0RXq
z>yf-}Pw)df(km4V%kc(5{r|L-7f<%jvHU-=PTO!BKYr@;;+gaO6UwK(IPo$8S?bW
zKx}LRKVEZTwcq%Ng
zZ>0sCd;w(`^`iYI$USF*wssSEyPIKFiWw&7n87g3414)}S!X_9ZfZ2cu9GyJ;Wi#N
z!s=s2@Lx5;Eye^6tqFG8O|YWa1hCKq(fih$;PD|7gk3bjrN<^v$;?#6a1ZY!K~*;+
zoJuhQ%{9Wo8Ad2vX@p}9MtE?>2$8pM8{t2ZCRl7S!Gd%e%W!Kllc3(81alT9LFA?+
zn0h1$-o26p6(L5@#~UGhgJ^^+ej~I_p*n^e>NUWqQUmDTGr&J~8zB5!1H5|I0MEK5
z!KTz81)HA)@61Yq1+_^qA65yKU)(Zj8Sdaz#BL-un$aPbD%XE#9fL<6K&
z8$jM`n*okB@rz|GbO6IWpP`3En{?2nQ3s>jbZ}6qhsAyM&@)#LQ)cNQ`t?frJq9ZVUkgU=S~;P4h5yxXJ$^$i`!j_}Ln
z=aThMJ(x-ixBFxwyz^KK+TMvUKQ9sJl0?`YNQAbBiO{!?4#G1sb-)zs;MR0Hgwd>Z
zY2k2{7F-9kkbXxCHHJjU8kY$3>JnkZ7V2fVaXKx$l$QWIW+p)Ut^`D$Z%b%
z;-PgX56_!5;yXgK?KR*wmW`I+BMs-sfT5C&3c;y1y(Ayr<)!J%WRF
z9|uGJ#z9dd2TegG_hGncsd2Dlz6Q>JrGec4YM_e5!NAHmh&&hv=O4vEXy0hALyPKn
z)$sB*HSB6rLxV{JYfClo{Z0+|Z)(71ii403Tr`pqGt}(|`oQHLYWQfB8a`gDhG!Sm
zuvM*r^r!n6zghBgTYojqXjmGThrMyx6kSi^nc|
zaLp4B-n!?;hA0n$#e?fS9^@J)dhpOf55D<#5B5CZ!OHJF_~~sA-d^j)cP9Ce+j=+;
zyLWbDlg^C}hZ~m`xpBh+H&(56qj|p@yZyJtjnZv5j%Gb*(|d5_85&~cG^ts5eWVNd
z3Ku5Sy6|>`3#(7N@WxFS_6m1nWVGIm7wm2<_q*{hL&L4yqXSM{^ooSLmq@sIyM$wo
zOPFz0!o{I3+{nAI+gq6~Oc~?CUGrRc{{t852hvD)@BL4+aOjC_Jh#?~c+iQ{e{$m0
zCr*rymH4z63EM|X_-=)Sztu`Ow?V?`rzKogMq_ih6E_{09^u4^7AF>FJ29rriR+d+
zv2BMFpPq1H_@y={zNL`x(MGDt;jYyU!8eMAV)Rox&W>~7hv2|PMGj1P(}5uy9oX~o
z5eNQ!#ev&GoVbQ_;@wOq`p-IPlAr5o$-z~73-If=N8$7wJLb%=m}|O^hAQ%{FXWX~QQk+we#N9Wu*S+Uw(J2kM47
z@Q})Z4=>p9%mzE|m}p0gzaCO{pGwz{{1P(4sJ$5Wn*&cbXwxDp9GEf4ftKfXOgMH$
zIO8xom&ab0NoY9g#IEl+af8>1-$w@P)Z)OZ4}KlAN1V{ZwN66$SP7?b5-#}Fi7U4{
z@y3*YrBoih9zHhJg}w(8uKY*h{jk?09B;j9Tpjkz>&9ui{au!xaN&p=7dB_P&=uio
zRhyj`!zATMJg6^^bSHSQhPv_WM{Z2=^NKKy8_)mT8e6V8@}mdEOfRng!-I-_9=tHi
zgZ@+x*4}mF+`X;c{u9?eaX3a-`EXc^7sdCyc*E<(EQJ^SjULp!?YY+Z^DdvA9D=S(
zUL5qH7YB~;UJp}>eWHI_KNOjnIcS!KVScY%th|{!*}xeGwOH$J4kUGD8H8Q^7BQxt
zwAS4kK$?GCMA%t7Nbj1a7Q+7Un8;5@3H4E0p`_nSLUpoNC|Qyn{QXy#b~~_jOzmLf
zr%hJXo-|VP)tjWb;1lBe^jlJM=n?5sJtInJ{X9XCei$IMe&;Dl3s^-3XZ+--Rn=rM2#!h14~@PHN=a2wQxL_~x_|`Ibnb
zx{Vh?ry3b9dZs~l&{(CF&)qg{p$K5BoUXcP@KaLj~
z8`1>na~G8bmrXf^tx#k*7JK4L&+f15o+$C~9Umm`V6RN*S73#m0s4OD@
zw4Xwp+YzR1wY9E7M^ptB#5a61@$EZ7*zfKT-49BkRm}-BW&Hvf6cn+>5${=5IvZh=J|Z=}E|8Km
zR;aEq2)f!}V~RILrjyaP*ji`EOf*ETBkbn$q-1-zAP+GJawV1Kc5K7FjhSy+RVFKG
zPF+iU=5s{;duO5Es~1`qIj)dkF+?Ub@0EEaIngyeKP0~Bv!s4NXF(p&2_>iObl_ys
zU$U<2y4A$D?t7wpT_IF=)(MRT&gdkRe5eFNlSZ3Iht;d65aYX^es@
z^E-z8RH2~SQgJC&7SgEhR8dNqs19|A`5k;w6KGTnWlE`1DOUd4=Qxe>)9x`;Sxyz*
zY4`iId(f#5RRme0XrJF{R3TNyym%GMMTT0hQ$=A1;e;zO$EgxKyqNspoW&sTajI~4
z_$jgiQ5{vG$^xoz1kpi-GQs&d#2`2$pnP$QS}Zz(Q?~{b9jUmYtqP=xK^X^gkybPz
sm>-sAL|34Y{A1h=Ms{jB1
literal 0
HcmV?d00001
diff --git a/src/dual_arm_sim/test/data/right_arm_carry.json b/src/dual_arm_sim/test/data/right_arm_carry.json
new file mode 100644
index 000000000..5c02fc3ed
--- /dev/null
+++ b/src/dual_arm_sim/test/data/right_arm_carry.json
@@ -0,0 +1 @@
+{"initial_joint_positions":{"planar_x":[-0.3000065360351928],"planar_y":[-5.3804343264078154e-06],"planar_theta":[-6.822927830980049e-05],"caster_front_left_steering_joint":[0.0002847040095919906],"caster_front_left_joint":[7.001615973455022e-14],"tmrv0_2_joint_0":[-0.0027451269896475224],"tmrv0_2_joint_1":[-1.9178901585354344e-15],"rocker_arm_joint":[0.0005703797940169742],"caster_rear_right_steering_joint":[0.0013118050150153643],"caster_rear_right_joint":[1.8841744187102604e-09],"tmrv0_2_joint_2":[-0.0027451269577879072],"tmrv0_2_joint_3":[-4.1960786391136077e-07],"franka_spine_vertical_joint":[0.39990047259684786],"left_fr3v2_joint1":[-1.4340961101590847e-06],"left_fr3v2_joint2":[-0.7854210026513052],"left_fr3v2_joint3":[-2.9163457062285616e-06],"left_fr3v2_joint4":[-2.3562081337563523],"left_fr3v2_joint5":[1.8524679427146324e-06],"left_fr3v2_joint6":[1.570702190742674],"left_fr3v2_joint7":[0.785299890331633],"left_fr3v2_finger_joint1":[0.03499996254416677],"left_fr3v2_finger_joint2":[0.035000037455841154],"right_fr3v2_joint1":[-0.6922973602595487],"right_fr3v2_joint2":[0.07474675316854905],"right_fr3v2_joint3":[-0.008146204891513879],"right_fr3v2_joint4":[-2.4427787236733227],"right_fr3v2_joint5":[-1.4744952271615146],"right_fr3v2_joint6":[2.3636652922721093],"right_fr3v2_joint7":[-2.8644049489309675],"right_fr3v2_finger_joint1":[0.03500150949524395],"right_fr3v2_finger_joint2":[0.03499849050530791],"block_green_1":[0.08560111539027009,0.7351982532028367,0.8294181080906252,0.49834171892628315,-0.0010967980484610893,0.00038967146066806036,0.8669799169345225],"block_green_2":[0.09054547038771091,0.7295806026308853,0.7795268976112296,0.4995762205243763,-0.0007500320601397391,0.0002540674135730557,0.8662695728168216],"block_green_3":[0.8499999602090549,0.24999993912551083,0.7797002770963214,1.0,-1.6644647955075325e-11,1.0787211464937484e-11,-1.1706196306759527e-08],"block_red_1":[0.6499999701037404,-0.25000001310998266,0.7797002770963214,0.9999999999999989,1.1099826265542329e-11,-2.5266241580094883e-11,4.21447788845104e-08],"block_red_2":[0.7499999602110018,0.24999993912308952,0.7797002770963214,1.0,-1.6642194975824778e-11,1.0831762390224237e-11,-1.1706818351784544e-08],"block_red_3":[0.8499999701065017,-0.2500000131069271,0.7797002770963214,0.9999999999999989,1.1092467923233945e-11,-2.5231750860725696e-11,4.214427351084591e-08]},"actuator_names":["franka_spine_vertical_joint","left_fr3v2_joint1","left_fr3v2_joint2","left_fr3v2_joint3","left_fr3v2_joint4","left_fr3v2_joint5","left_fr3v2_joint6","left_fr3v2_joint7","right_fr3v2_joint1","right_fr3v2_joint2","right_fr3v2_joint3","right_fr3v2_joint4","right_fr3v2_joint5","right_fr3v2_joint6","right_fr3v2_joint7"],"time":[0.0,0.015000000000000568,0.03300000000000125,0.04800000000000182,0.0660000000000025,0.08400000000000318,0.09900000000000375,0.11700000000000443,0.132000000000005,0.15000000000000568,0.16500000000000625,0.18300000000000693,0.1980000000000075,0.21600000000000819,0.23100000000000875,0.24900000000000944,0.26400000000001,0.2820000000000107,0.30000000000001137,0.31500000000001194,0.3330000000000126,0.3480000000000132,0.36300000000001376,0.38100000000001444,0.396000000000015,0.4140000000000157,0.42900000000001626,0.44700000000001694,0.4620000000000175,0.4800000000000182,0.49500000000001876,0.5130000000000194,0.52800000000002,0.5460000000000207,0.5610000000000213,0.5790000000000219,0.5940000000000225,0.6120000000000232,0.6270000000000238,0.6450000000000244,0.660000000000025,0.6780000000000257,0.6930000000000263,0.7110000000000269,0.7170000000000272,0.7320000000000277,0.7470000000000283,0.7620000000000289,0.7800000000000296,0.7950000000000301,0.8010000000000304,0.8160000000000309,0.8310000000000315,0.8490000000000322,0.8640000000000327,0.8820000000000334,0.897000000000034,0.9150000000000347,0.9330000000000354,0.9480000000000359,0.9660000000000366,0.9810000000000372,0.9990000000000379,1.0140000000000384,1.029000000000039,1.0470000000000397,1.0620000000000402,1.080000000000041,1.0950000000000415,1.1130000000000422,1.1280000000000427,1.1460000000000434,1.161000000000044,1.1790000000000447,1.1940000000000452,1.2090000000000458,1.2240000000000464,1.239000000000047,1.2570000000000476,1.2750000000000483,1.2900000000000489,1.3080000000000496,1.3230000000000501,1.3410000000000508,1.3560000000000514,1.374000000000052,1.3890000000000526,1.4070000000000533,1.4220000000000539,1.4370000000000545,1.4550000000000551,1.4700000000000557,1.4850000000000563,1.503000000000057,1.5180000000000575,1.5360000000000582,1.5510000000000588,1.5690000000000595,1.58400000000006,1.6020000000000607,1.6170000000000613,1.635000000000062,1.6500000000000625,1.665000000000063,1.6830000000000638,1.6980000000000643,1.716000000000065,1.7310000000000656,1.7460000000000662,1.7640000000000668,1.7790000000000674,1.797000000000068,1.8120000000000687,1.8300000000000693,1.84500000000007,1.8630000000000706,1.8780000000000712,1.8960000000000719,1.9110000000000724,1.929000000000073,1.9440000000000737,1.9620000000000744,1.977000000000075,1.9950000000000756,2.010000000000076,2.028000000000077,2.0430000000000774,2.061000000000078,2.079000000000079,2.0940000000000794,2.11200000000008,2.1240000000000805,2.139000000000081,2.1570000000000817,2.169000000000082,2.187000000000083,2.2020000000000834,2.220000000000084,2.2350000000000847,2.2530000000000854,2.268000000000086,2.2830000000000865,2.301000000000087,2.3160000000000878,2.3340000000000884,2.349000000000089,2.3670000000000897,2.3820000000000903,2.397000000000091,2.4150000000000915,2.433000000000092,2.4480000000000928,2.4630000000000933,2.481000000000094,2.4960000000000946,2.5140000000000953,2.529000000000096,2.5470000000000965,2.565000000000097,2.5800000000000978,2.5980000000000985,2.613000000000099,2.6280000000000996,2.6460000000001003,2.661000000000101,2.6790000000001015,2.694000000000102,2.7090000000001027,2.7240000000001032,2.742000000000104,2.7570000000001045,2.772000000000105,2.7870000000001056,2.8050000000001063,2.820000000000107,2.8380000000001075,2.853000000000108,2.871000000000109,2.8860000000001094,2.90100000000011,2.9190000000001106,2.934000000000111,2.952000000000112,2.9670000000001124,2.985000000000113,3.0000000000001137,3.0180000000001144,3.036000000000115,3.0510000000001156,3.0690000000001163,3.084000000000117,3.1020000000001176,3.117000000000118,3.135000000000119,3.1500000000001194,3.16800000000012,3.1830000000001206,3.2010000000001213,3.219000000000122,3.2340000000001226,3.249000000000123],"commands":[[0.39990047259684786,-1.4340961101590847e-06,-0.7854210026513052,-2.9163457062285616e-06,-2.3562081337563523,1.8524679427146324e-06,1.570702190742674,0.785299890331633,-0.6922973602595487,0.07474675316854905,-0.008146204891513879,-2.4427787236733227,-1.4744952271615146,2.3636652922721093,-2.8644049489309675],[0.39991171963171873,-1.3031264704884207e-06,-0.7854196112256973,-2.949993652680027e-06,-2.3562070760747105,1.5579931067501075e-06,1.5707017791055597,0.78529989680693,-0.6923000113996823,0.07475509112507316,-0.008150019575492193,-2.442771667879905,-1.4744991560783707,2.3636673864723368,-2.864403885460444],[0.39992369359485663,-1.159247143776727e-06,-0.7854180130576139,-2.9334181690071497e-06,-2.356205959093664,1.2577620831712428e-06,1.5707013722137344,0.7852999046819426,-0.692302727055542,0.07476400796596754,-0.008153934621663297,-2.4427643453617742,-1.4745022695893688,2.363669256521434,-2.8644031490970945],[0.39993252327493223,-1.0508734631840193e-06,-0.785416753943637,-2.8843904863452234e-06,-2.3562051457800046,1.046084909395944e-06,1.570701093312942,0.78529991131825,-0.6923046593991719,0.07477072333964944,-0.008156725514091879,-2.4427590587241705,-1.4745038780785933,2.3636703969705346,-2.8644028553797507],[0.3999418799002198,-9.337163374452045e-07,-0.7854153403236803,-2.793291357661867e-06,-2.356204297862731,8.325575772219663e-07,1.5707008183254283,0.785299919254112,-0.6923066437177715,0.07477805808187624,-0.008159594613397391,-2.442753548609845,-1.4745049725511394,2.3636713829251774,-2.8644027605087428],[0.39995002534768004,-8.292162983428142e-07,-0.7854140352163359,-2.6752803262517768e-06,-2.356203574957212,6.575153548625156e-07,1.5707005978987783,0.7852999269917686,-0.6923083206468293,0.0747846983086455,-0.008162018970588028,-2.442748818867178,-1.4745054425787008,2.3636720513717746,-2.8644028447998098],[0.3999559875766949,-7.507736993010053e-07,-0.7854130284664474,-2.5617311010474872e-06,-2.356203057076549,5.36949913706201e-07,1.5707004492977976,0.7852999331773225,-0.6923095204849405,0.07478975638572695,-0.008163750661981556,-2.4427453903027057,-1.474505522020823,2.3636724247934096,-2.86440299494936],[0.3999622614106704,-6.659206529035016e-07,-0.7854119125238951,-2.412742776225576e-06,-2.356202524719675,4.180890719072541e-07,1.570700306412346,0.7852999401939774,-0.6923107604851085,0.07479530990871201,-0.008165534060595833,-2.4427418068760636,-1.4745053858192765,2.3636727063613496,-2.864403223124782],[0.39996683468579874,-6.021921314414409e-07,-0.7854110548268138,-2.281706682448004e-06,-2.356202146407164,3.373259247554929e-07,1.570700212327649,0.7852999456621298,-0.6923116518728645,0.07479954484544292,-0.00816680914496444,-2.442739206063133,-1.4745051597753893,2.3636728347147993,-2.8644034274734462],[0.3999716286919987,-5.33256924692659e-07,-0.7854101062415123,-2.1202456422474465e-06,-2.356201760453996,2.587112733680613e-07,1.5707001243396743,0.7852999517470992,-0.6923125774371856,0.07480419744785723,-0.008168123330927797,-2.4427364848901494,-1.4745048248873607,2.3636728932323123,-2.8644036681256533],[0.3999751108233307,-4.815102360573788e-07,-0.7854093782605285,-1.984819524647165e-06,-2.3562014881928173,2.059614984343256e-07,1.570700068302109,0.7852999564195247,-0.6923132458719538,0.07480774678657964,-0.008169063546804247,-2.4427345080005023,-1.4745045303070252,2.363672881904688,-2.864403854485683],[0.399978749125362,-4.255894052522911e-07,-0.785408573916545,-1.8240056275056776e-06,-2.3562012123828846,1.5524932521782188e-07,1.570700017947544,0.7852999615598918,-0.6923139429317584,0.07481164727068099,-0.008170033103027798,-2.442732437883055,-1.4745041887162316,2.3636728156253097,-2.864404053856909],[0.3999813837572404,-3.836665790001431e-07,-0.7854079570255628,-1.6931254356126932e-06,-2.3562010191615097,1.2165902731052022e-07,1.5706999874556722,0.7852999654697203,-0.6923144483430197,0.07481462350831464,-0.008170727081709314,-2.442730932852971,-1.4745039280379755,2.3636727284495618,-2.864404197401064],[0.39998412888348206,-3.3843294903935484e-07,-0.7854072756780542,-1.5415216683690072e-06,-2.356200824722333,8.979602512878316e-08,1.570699961791423,0.7852999697360974,-0.6923149772100062,0.07481789480817902,-0.008171443039261714,-2.4427293558588863,-1.4745036531393163,2.363672597558742,-2.864404342292274],[0.3999861115706642,-3.0458218263994103e-07,-0.785406753213605,-1.4207196442927093e-06,-2.356200689399551,6.89942669443388e-08,1.5706999476268144,0.7852999729566424,-0.6923153617897305,0.074820391369595,-0.008171955754338068,-2.442728208744405,-1.4745034581100576,2.3636724740685464,-2.8644044414370344],[0.3999881725296312,-2.6812793521868965e-07,-0.7854061761689609,-1.2832928240544353e-06,-2.356200554087038,4.9565892354246914e-08,1.5706999372866204,0.7852999764455458,-0.6923157651279911,0.07482313585106169,-0.008172485017995407,-2.442727006300632,-1.4745032642135247,2.3636723161503728,-2.864404537040523],[0.3999896578121587,-2.409025622538163e-07,-0.7854057336386511,-1.17550670037391e-06,-2.3562004605053146,3.709928636819306e-08,1.570699932913734,0.7852999790603219,-0.6923160589121248,0.07482523065048174,-0.008172864311307645,-2.4427261313826936,-1.474503133670154,2.363672181127429,-2.8644045996184677],[0.3999911986814197,-2.1164446592871859e-07,-0.785405244778063,-1.054570693519264e-06,-2.356200367499394,2.5675447409497804e-08,1.5706999313996348,0.7852999818727562,-0.6923163673284756,0.07482753376461446,-0.008173256195355848,-2.4427252141066162,-1.4745030099472913,2.3636720196648473,-2.864404657364739],[0.39999251156576127,-1.85740358245774e-07,-0.7854047980886485,-9.429202358382036e-07,-2.356200292076942,1.7283754549048155e-08,1.570699932773709,0.7852999843580122,-0.6923166338083759,0.07482962702873593,-0.008173589144908682,-2.442724422715922,-1.4745029168842712,2.363671862698004,-2.864404699509703],[0.3999934552282206,-1.664585941748868e-07,-0.7854044553644239,-8.569189879470927e-07,-2.356200240396305,1.2093650912983402e-08,1.57069993540609,0.7852999861997567,-0.6923168279232356,0.07483122504623618,-0.008173828192371002,-2.442723846874391,-1.4745028587392053,2.3636717375493372,-2.864404725040806],[0.3999944319230835,-1.4580614397034193e-07,-0.7854040765548702,-7.619675785989817e-07,-2.356200189494521,7.535694356806464e-09,1.5706999396837098,0.7852999881586353,-0.692317031537944,0.07483298225421621,-0.00817407570671419,-2.4427232432335333,-1.4745028077614954,2.363671596051099,-2.864404746624989],[0.3999951330637581,-1.3046673968336017e-07,-0.7854037857997175,-6.894833676338431e-07,-2.3562001548170954,4.818274168938094e-09,1.5706999437811457,0.7852999895997714,-0.6923171796630908,0.07483432384359832,-0.008174253716483964,-2.4427228041008453,-1.474502777793324,2.3636714863682045,-2.8644047587180723],[0.39999574522307246,-1.1666160535100512e-07,-0.7854035159166263,-6.227761569149118e-07,-2.35620012600039,2.8554940962424672e-09,1.5706999480878627,0.7852999908827877,-0.6923173105003856,0.07483556296690756,-0.008174409594019657,-2.442722415945506,-1.4745027567085678,2.3636713847265094,-2.8644047667186614],[0.39999637790987375,-1.0192066616450776e-07,-0.7854032174529608,-5.499608369453986e-07,-2.3562000978512314,1.2577208467881896e-09,1.5706999532687629,0.7852999922334456,-0.6923174473594523,0.07483692568259818,-0.008174571441456547,-2.4427220092416713,-1.4745027403670905,2.363671273706414,-2.8644047722841233],[0.3999968315603559,-9.100551893924833e-08,-0.7854029882450171,-4.949579392493978e-07,-2.3562000788341693,3.994079512832714e-10,1.5706999574411913,0.7852999932170971,-0.6923175465958011,0.07483796619354377,-0.008174688185513911,-2.442721713539955,-1.4745027323082398,2.3636711903360585,-2.864404774481357],[0.39999730016983565,-7.937427148734783e-08,-0.7854027346807361,-4.3530071454148623e-07,-2.35620006036474,-2.201059775062264e-10,1.570699962143215,0.7852999942457977,-0.6923176501287333,0.07483911055680048,-0.008174809656785766,-2.4427214038479588,-1.4745027273580473,2.363671101020903,-2.864404775112286],[0.39999763604962507,-7.077912757249985e-08,-0.7854025398957627,-3.9050509133484525e-07,-2.3562000479618925,-4.895828592763395e-10,1.570699965746074,0.7852999949902072,-0.6923177249911723,0.0748399843923155,-0.008174897463360175,-2.4427211787921186,-1.474502725969,2.3636710351737524,-2.864404774522997],[0.3999977281816348,-9.625877380223392e-08,-0.7854023665391322,-4.984142529459269e-07,-2.3562001195033444,-7.018308654599046e-09,1.5706999691683003,0.7852999941516778,-0.6923162235585394,0.07483982536659985,-0.008172980632893349,-2.442717996560789,-1.4745031450288042,2.3636718093395825,-2.864404797184513],[0.3999979382718237,-6.67156942975967e-08,-0.7854022178663174,-3.682418851162023e-07,-2.356200089324956,-7.051818265254115e-09,1.5706999677772309,0.7852999959432497,-0.6923156552938865,0.07484002821452088,-0.008172245477485752,-2.4427158539055265,-1.4745038089690754,2.3636723826372212,-2.8644048163039644],[0.39999828713681157,-4.330051719870802e-08,-0.7854020272494329,-2.8129630638892916e-07,-2.3562000306039925,-8.623113300709609e-09,1.5706999642023223,0.7852999976481674,-0.6923158758651109,0.07484094874707709,-0.008172503548254604,-2.442715414319496,-1.4745042868527078,2.363672616223056,-2.8644047908027424],[0.3999985284839376,-3.676629190817749e-08,-0.7854018785433089,-2.4726186596821016e-07,-2.3562000053656464,-8.652569630594727e-09,1.5706999619315118,0.7852999983335248,-0.6923161507849255,0.07484171606995808,-0.008172838148989368,-2.4427155260215088,-1.4745044413320012,2.3636726666140695,-2.8644047509801682],[0.3999987532215015,-3.259222507327525e-08,-0.7854017138024109,-2.151039576229315e-07,-2.3561999923956765,-6.6923467761782424e-09,1.5706999623455795,0.7852999986307336,-0.6923164610131929,0.07484253455388241,-0.008173223218949378,-2.442715801061618,-1.4745044435467027,2.363672623715677,-2.8644047043440026],[0.39999889832642804,-2.969108019048914e-08,-0.785401586972428,-1.9008938162324299e-07,-2.356199988550589,-4.3593397607763555e-09,1.570699965179803,0.7852999986631591,-0.6923166866164429,0.0748431391397762,-0.008173508827462853,-2.4427160575209723,-1.4745043584209254,2.363672530801746,-2.8644046745750313],[0.3999990364883001,-2.6280128749444444e-08,-0.7854014464836218,-1.6168594173172946e-07,-2.3561999876029844,-1.614673725259542e-09,1.5706999703725335,0.7852999986322692,-0.692316917735914,0.0748437903217857,-0.008173806786084963,-2.442716362807916,-1.4745042053278827,2.3636723779175064,-2.864404652061104],[0.3999991305059526,-2.348730081992927e-08,-0.7854013386624541,-1.397793303726264e-07,-2.3561999881878277,2.9896570194823366e-10,1.5706999752587387,0.7852999986250191,-0.6923170809621351,0.07484428185020145,-0.008174020496066912,-2.442716605819126,-1.4745040605919326,2.3636722322026715,-2.8644046431134],[0.39999922612822847,-2.0288996143054825e-08,-0.7854012197035983,-1.1605803701542539e-07,-2.3561999895204164,2.027011351606716e-09,1.5706999809488784,0.7852999986729134,-0.6923172467960734,0.07484481969338276,-0.00817424011678815,-2.4427168792694816,-1.4745038853468015,2.3636720504629567,-2.8644046413568005],[0.39999929592421607,-1.78171745069305e-08,-0.785401128680757,-9.859902075968781e-08,-2.356199990765347,3.0163649309060986e-09,1.570699985161943,0.78529999875889,-0.6923173637201164,0.07484522977191463,-0.008174396153102195,-2.442717090809969,-1.4745037464708084,2.363671901479647,-2.864404645118315],[0.3999993716374787,-1.5135114969480748e-08,-0.7854010284262467,-8.043531771630591e-08,-2.3561999921728454,3.750407702876713e-09,1.5706999893608076,0.7852999989007071,-0.692317482658194,0.07484568118273388,-0.008174555462383762,-2.442717324878941,-1.4745035941471092,2.363671732450018,-2.8644046534489953],[0.39999942997256893,-1.3154344231735906e-08,-0.7854009517781069,-6.752419185395901e-08,-2.356199993184921,4.06414329552894e-09,1.5706999921115203,0.7852999990353228,-0.692317566726731,0.07484602667612508,-0.008174668115231279,-2.4427175038699436,-1.4745034811572417,2.3636716028526146,-2.8644046620888677],[0.3999994957848922,-1.1082585602349483e-08,-0.7854008673793396,-5.448959288267834e-08,-2.356199994167145,4.1776719576015275e-09,1.5706999945758227,0.7852999991990705,-0.6923176525133773,0.07484640793027697,-0.008174782788978352,-2.4427177002900984,-1.4745033629154203,2.363671462827474,-2.8644046731413275],[0.39999954780780284,-9.598513933387345e-09,-0.7854008028553902,-4.5472376203469847e-08,-2.3561999947942147,4.115936732653034e-09,1.570699996023642,0.7852999993273642,-0.692317713365607,0.0748467002374602,-0.008174863757895078,-2.4427178495400512,-1.4745032783797514,2.3636713594906267,-2.8644046822163816],[0.39999960726489775,-8.08408308455332e-09,-0.7854007318015466,-3.658627614879253e-08,-2.3561999953418127,3.9181701927586545e-09,1.570699997171126,0.7852999994637032,-0.6923177756959147,0.07484702320682997,-0.008174946184005336,-2.4427180125282684,-1.4745031924771363,2.363671251134596,-2.864404692393528],[0.39999965444224816,-7.021129414727811e-09,-0.7854006774744546,-3.057444140369916e-08,-2.3561999956550905,3.6887236148115225e-09,1.5706999977431773,0.7852999995597855,-0.6923178200853188,0.07484727106887529,-0.008175004467577253,-2.442718135895314,-1.4745031325785345,2.3636711731240285,-2.864404700050322],[0.39999970818463915,-5.95353957834336e-09,-0.7854006176432566,-2.4766784796444133e-08,-2.3561999958975566,3.372154778957699e-09,1.570699998093264,0.785299999653484,-0.6923178657380561,0.07484754513904977,-0.008175063966187281,-2.4427182702094847,-1.474503072983795,2.363671092964545,-2.8644047081335637],[0.39999972538435785,-5.642404916490361e-09,-0.7854005989132913,-2.3126065658004468e-08,-2.3561999959529203,3.2616851675310788e-09,1.5706999981486847,0.7852999996797204,-0.6923178793396985,0.07484763120107948,-0.008175081596352581,-2.442718311873386,-1.474503055773451,2.3636710692400618,-2.8644047105582566],[0.39999976676948307,-4.950518648005438e-09,-0.7854005545683828,-1.9578166103160194e-08,-2.3561999960495337,2.9829059152895406e-09,1.5706999981909373,0.7852999997353518,-0.6923179102442144,0.07484783552117942,-0.008175121478892813,-2.44271840969853,-1.474503017873612,2.36367101588151,-2.864404716052436],[0.39999980578175437,-4.366799884250991e-09,-0.7854005135511587,-1.671252028976755e-08,-2.356199996102631,2.7082518259158368e-09,1.570699998136672,0.785299999778351,-0.6923179372180003,0.07484802527571574,-0.00817515608705783,-2.4427184990563484,-1.474502986455034,2.3636709702456353,-2.8644047207870265],[0.3999998423502977,-3.874471024579735e-09,-0.7854004756098713,-1.4407231853298938e-08,-2.3561999961296434,2.4447552890159463e-09,1.5706999980275318,0.7852999998108476,-0.6923179608049159,0.0748482015284684,-0.0081751862011403,-2.442718580638044,-1.4745029605466011,2.363670931393456,-2.8644047248398454],[0.39999988294117894,-3.3834722861755836e-09,-0.7854004338139515,-1.223333840480013e-08,-2.3561999961472293,2.1494377871368254e-09,1.570699997867655,0.7852999998389272,-0.6923179852881237,0.07484839658441954,-0.008175217330693941,-2.4427186691791505,-1.474502935514742,2.363670892496345,-2.8644047289226053],[0.39999991400351764,-3.0424449876271003e-09,-0.7854004018445978,-1.0811925204550481e-08,-2.3561999961619553,1.923566087521335e-09,1.5706999977358935,0.7852999998554653,-0.6923180029663076,0.07484854647824125,-0.008175239746137517,-2.4427187358671567,-1.4745029188196421,2.3636708655884378,-2.864404731772716],[0.39999992572706994,-2.920672119165382e-09,-0.7854003897366745,-1.0324397728953485e-08,-2.3561999961698024,1.8386474638274337e-09,1.5706999976872567,0.7852999998607417,-0.6923180094267376,0.07484860341786378,-0.008175247929661867,-2.442718760871431,-1.4745029130411313,2.36367085605166,-2.8644047327914173],[0.3999999533011687,-2.6474581661605152e-09,-0.785400361062492,-9.272567547915475e-09,-2.3561999961974935,1.6400658453703783e-09,1.5706999975813642,0.7852999998713852,-0.6923180242167997,0.07484873865826695,-0.00817526665920911,-2.4427188194956635,-1.4745029005212857,2.363670834911758,-2.864404735075304],[0.399999978440969,-2.412233377583318e-09,-0.7854003345288996,-8.416339405149381e-09,-2.3561999962397797,1.4607884545582609e-09,1.570699997502606,0.7852999998793387,-0.692318037271164,0.07484886432680621,-0.008175283199689659,-2.442718872955414,-1.4745028903528037,2.363670817164972,-2.864404737035496],[0.4000000055009862,-2.1702749637550707e-09,-0.7854003052864132,-7.584434822493398e-09,-2.356199996312868,1.2700038795064814e-09,1.570699997447623,0.7852999998866654,-0.6923180509662766,0.07484900345264518,-0.00817530058452503,-2.4427189309226556,-1.4745028806500515,2.363670799619165,-2.8644047390400496],[0.3999987927125956,-3.677256280972472e-07,-0.785401789070562,-6.175769329169621e-07,-2.356200870050959,1.1820161117494582e-07,1.5706997910112495,0.7853000019554308,-0.6923135503702551,0.07483569217231567,-0.008169055462392815,-2.442723445462652,-1.4744919940835186,2.3636675255620077,-2.86440872899671],[0.39998632947994905,-2.9015398461767487e-06,-0.7854079791493289,-3.056098808228271e-06,-2.3562072922379915,2.3357029528375183e-06,1.5706997982990305,0.7852999670624017,-0.6922647046395854,0.0746651963986968,-0.00810088225781685,-2.4428107103162198,-1.4743153312210089,2.3635781016934057,-2.8645018271459795],[0.39996031020647327,-6.160575410072475e-06,-0.7854124663733595,-5.402614650074202e-06,-2.356211189100901,7.174409937292772e-06,1.570702742069237,0.785299851587112,-0.6921506871975818,0.07427791994805587,-0.007939386377667702,-2.4430302151655967,-1.4739070110791166,2.3633603847637445,-2.8647265493071363],[0.3999058274368051,-1.0795533408210302e-05,-0.7854170992345803,-7.609018106639335e-06,-2.356214338147725,1.610084495470786e-05,1.5707095426935513,0.7852996387815901,-0.6918856240099255,0.0733911555011996,-0.007555455282697854,-2.443542433742653,-1.4729761371864127,2.3628613825255225,-2.8652442278387205],[0.3998247878021797,-1.581548383398144e-05,-0.7854208039063605,-8.421353857725014e-06,-2.356216934515409,2.7513677011525084e-05,1.570719149608146,0.7852993793444286,-0.6914437247080669,0.07192789770116476,-0.006905288674915016,-2.444390637741294,-1.4714470871455456,2.362046019813379,-2.866097246659671],[0.399737488415945,-2.014548929801328e-05,-0.7854231526063508,-8.178094416601072e-06,-2.35621891662395,3.702297250302311e-05,1.5707290850281064,0.7852991045735893,-0.690911180464536,0.07018296193150081,-0.006119288386577414,-2.445389775490816,-1.4696322521096032,2.3610813640822856,-2.867111043747612],[0.3996102081190404,-2.520720805365251e-05,-0.7854264240048919,-5.5161286347270676e-06,-2.356221751466176,4.6842998646372184e-05,1.5707415966677425,0.7852987878039774,-0.6900362270106436,0.0673407511086372,-0.004828002818351509,-2.4469955242717063,-1.4666873450557736,2.3595196150968225,-2.868754205235334],[0.39949294718038053,-2.849245068197068e-05,-0.7854291038211088,-8.643302759858133e-07,-2.3562249562601796,5.396823335682268e-05,1.5707501735928768,0.7852986269667502,-0.6891041309296911,0.06434599017899008,-0.0034569019832060583,-2.448656144648114,-1.4635892823531036,2.3578809254597717,-2.870480825615438],[0.39934347351415334,-3.156146538217762e-05,-0.7854321052216824,5.703528412005356e-06,-2.356228976335835,6.135758435966038e-05,1.5707587002356835,0.7852984927638665,-0.6877131086550837,0.05996469149007096,-0.0014440202248412728,-2.4510476327050346,-1.4590454775576511,2.355479838286929,-2.8730083591330393],[0.39920400676610507,-3.4113530501933625e-05,-0.785433525461638,7.186584719220445e-06,-2.356230406248834,6.626679699981489e-05,1.5707650291127233,0.7852983266115983,-0.6862589092668215,0.055494144312283195,0.0006043271109872712,-2.453459621042303,-1.4543653387247704,2.353002362922644,-2.87560564619396],[0.3990650466090129,-3.558540746194257e-05,-0.7854363768837577,1.478476551488563e-05,-2.356234486393755,7.107492353861493e-05,1.570769777517423,0.7852982546236967,-0.6845379036740313,0.05037795668781791,0.0029549001927503676,-2.4561578685090932,-1.4490052178772717,2.3501695653451478,-2.8785723583236424],[0.3989042205343218,-3.678492986695353e-05,-0.7854389503987226,2.410678084809168e-05,-2.356239706993279,7.608396662416278e-05,1.570774414538055,0.7852981827710448,-0.6820946543899518,0.043401121977884774,0.006143846999955855,-2.459765689833093,-1.4416427693936418,2.346272597564503,-2.882634549513782],[0.39877713582577246,-3.7552809050669465e-05,-0.7854405624426511,3.123440910799446e-05,-2.3562438738292766,7.965116699277475e-05,1.5707775989606403,0.7852981172917219,-0.6797008029753437,0.036885730205568505,0.009074521070614242,-2.463065949070529,-1.434707908860383,2.3425915150474803,-2.886447980237981],[0.3986336736145615,-3.8304038810516925e-05,-0.78544218893409,3.868797089569809e-05,-2.356248203474292,8.329323241279653e-05,1.5707808116568907,0.7852980197402633,-0.676319104664468,0.02821765166921624,0.012871700174947324,-2.4673553025904202,-1.4253907646301316,2.3376206663364543,-2.8915523644145464],[0.3985233619306557,-3.8775018156226164e-05,-0.7854435876974434,4.491308575809281e-05,-2.3562517012164617,8.595011403800566e-05,1.5707829710730978,0.7852979361647445,-0.6730036666999029,0.02029911029280493,0.01621227652217919,-2.4711722528328255,-1.4167952164248125,2.333001490239512,-2.8962427614740123],[0.39840931422969683,-3.893686367196573e-05,-0.7854456067050379,5.4367260080626784e-05,-2.356256799162465,8.893426186685276e-05,1.5707848200331076,0.785297882284098,-0.6683622642203281,0.010052384453392479,0.02032504975505474,-2.4759675203454994,-1.4055727267122142,2.326914625468149,-2.902341806253235],[0.3983383516971989,-3.861429351865627e-05,-0.7854475387635804,6.454760119995282e-05,-2.356262224388856,9.137098540971627e-05,1.5707857304200896,0.7852979158504383,-0.6639253327046278,0.0010258240582350683,0.023730589654671563,-2.4800605747748596,-1.3956086135916188,2.321450086508803,-2.907735316675306],[0.3982927237548535,-3.643464396541572e-05,-0.7854491680210779,7.555084243532733e-05,-2.356269173544073,9.397305357047336e-05,1.5707848336631594,0.7852980948892295,-0.6579302450477361,-0.010176655033122307,0.02763488706893348,-2.4849743001183597,-1.383150254144263,2.314522666813476,-2.914453715267407],[0.3982889605894147,-3.200615735507195e-05,-0.785450287807128,8.19976570191192e-05,-2.356271020491113,9.364852765560201e-05,1.5707791004927256,0.7852984064334745,-0.6523621112945636,-0.01970408657014515,0.03063082657276111,-2.4890209304243878,-1.372481199233422,2.308485830215577,-2.920183191022553],[0.3983361801724477,-2.330470516198879e-05,-0.7854509435058009,8.71215700871984e-05,-2.3562607606837433,8.628255605151204e-05,1.5707622946329531,0.7852990343788605,-0.6451362467543819,-0.031078741787179433,0.03380506741519319,-2.4936840901070596,-1.3596841116483769,2.301109304468531,-2.9270453713256313],[0.39841638107015187,-1.486077549835216e-05,-0.7854493758238397,8.691282943891585e-05,-2.3562512692886615,7.35736413650071e-05,1.5707389996436565,0.7852996281469915,-0.6387318193395651,-0.040383577533513015,0.03604281270938201,-2.497378216743432,-1.349161447749944,2.2949162331508757,-2.932683643311116],[0.3985213480924177,-7.222402721673318e-06,-0.7854412050776063,8.083284610412909e-05,-2.356240219947335,5.6821392646275496e-05,1.5707184520793405,0.7852999111099769,-0.6319366565395863,-0.04953038998114741,0.037860654797294335,-2.500910463513803,-1.338737535246542,2.2886460476844666,-2.93823592688963],[0.39864925242221083,1.0646617906978228e-06,-0.7854324727016354,7.406440642707369e-05,-2.3562313666900776,3.704532305195992e-05,1.570700721701876,0.7853000640976044,-0.6248490543434596,-0.05843064119398736,0.03928303272433664,-2.5042382819593487,-1.3285588501699004,2.2823969221332523,-2.9436385221819124],[0.3988020393589035,8.46877355228952e-06,-0.7854224371602148,6.627503120654181e-05,-2.356223680237567,1.8550898292413724e-05,1.5706855691245407,0.7853002708012513,-0.6176341560982312,-0.06695263792151894,0.04032567871320905,-2.50732973517051,-1.3187880393471823,2.276273160705339,-2.9488062809720303],[0.3990117069458993,1.5733646278908905e-05,-0.785411351538619,5.620425405851123e-05,-2.3562148537557848,-3.3147014417761035e-07,1.5706704063691717,0.7853005762399607,-0.6089679944663345,-0.0765900138380802,0.04112526294925173,-2.510720668084585,-1.3077218051778332,2.2691812816051167,-2.95464018323657],[0.39924244862184494,2.1164985808504387e-05,-0.785401244419746,4.4865275185712486e-05,-2.3562057470268254,-1.6371724306278542e-05,1.5706581963050141,0.7853008455213326,-0.6004891663544617,-0.08549408861965671,0.041502753606612534,-2.5137618824442005,-1.2974788153303614,2.2624659637534648,-2.9600235346883697],[0.3994432237726321,2.3515374734313486e-05,-0.7853937303425879,3.507483128909736e-05,-2.356197882249414,-2.7897347401258792e-05,1.570651379334474,0.7853009564923735,-0.5936803207976268,-0.09232597394365655,0.04154876161493299,-2.5160397603253606,-1.2896075936379752,2.257195591641355,-2.964150040302643],[0.39968511056636946,2.363568480270079e-05,-0.7853860620099844,2.3603992568562603e-05,-2.3561880391922196,-3.94010035212244e-05,1.570653599505044,0.785300760460311,-0.585939979379739,-0.09979697142389708,0.04137814911351587,-2.518479259116137,-1.2809896613064755,2.2513120111491123,-2.9686583751954347],[0.39988281061252395,2.2005051812630382e-05,-0.7853810587965178,1.4951452276157782e-05,-2.3561847335369728,-4.587646075150013e-05,1.5706662896305206,0.785300364060421,-0.5799428529473598,-0.10540596801416927,0.04110737923121166,-2.520277764089511,-1.2745135139295303,2.246829843180112,-2.9720399461397395],[0.4001104087405292,1.8332566322272284e-05,-0.785375920183826,5.86321170090374e-06,-2.356192597208086,-4.868100260924495e-05,1.5706890260234072,0.7852999371428071,-0.5733817678881418,-0.11139077614015386,0.040692566270069445,-2.522168928512748,-1.2675986854530636,2.2419893620773363,-2.9756450688632343],[0.4002884363942085,1.402880086615381e-05,-0.7853716071918051,-4.961832144782027e-07,-2.3561987563729803,-4.60531201387365e-05,1.5707054526050006,0.7852999022882755,-0.5685035993332862,-0.11575995905862438,0.0403206618841217,-2.52353506868297,-1.262547526279238,2.2384232198873564,-2.9782755964218834],[0.4004851006066233,7.852462396842938e-06,-0.7853671643598397,-6.554528579651826e-06,-2.3562045478316698,-3.8136715409330506e-05,1.5707222191152657,0.7852999830891884,-0.5634219706888223,-0.12027229192109844,0.0399015421389425,-2.524939524504621,-1.2573284939320017,2.234723492088738,-2.980992118049439],[0.40063193486987686,2.910203302785486e-06,-0.7853631156238697,-1.2021772312697036e-05,-2.356208357080364,-2.9389971484062465e-05,1.5707341945410713,0.7853000051226577,-0.5598363425390699,-0.1234631085128534,0.03959005522230532,-2.525934166106256,-1.2536460044470727,2.2321084924818715,-2.9828875443451492],[0.4007806266862694,-1.8644257292191087e-06,-0.7853563997410943,-2.1218848135616387e-05,-2.356212916818365,-1.9847043335993704e-05,1.5707465018362352,0.7852999005406753,-0.5562290376444597,-0.12680142466337316,0.03919020984252328,-2.526958741474472,-1.2499235809821219,2.229442284947537,-2.984624230469965],[0.4008782159577331,-4.711113656154704e-06,-0.7853506006043961,-2.971259796140497e-05,-2.3562167219888073,-1.3888675105031836e-05,1.5707551850201125,0.7852997468276319,-0.5537414512149685,-0.12934273641062716,0.03877190440450695,-2.5276906434469066,-1.2473279389342262,2.227546906205715,-2.9855369511005554],[0.40095111113575105,-6.616871339490299e-06,-0.7853459499449902,-3.749885989917021e-05,-2.3562203944454034,-9.988671595497119e-06,1.570762467018186,0.7852995919872583,-0.5516840538840919,-0.13181491731709877,0.03821579410855897,-2.528321872922306,-1.2451372425959806,2.2258944419556106,-2.985880439846409],[0.4010076121179122,-7.691787350297478e-06,-0.7853425403335788,-4.490075344737358e-05,-2.356223954384385,-7.461961005570591e-06,1.5707697809968033,0.785299444362273,-0.5497224856441978,-0.13480019528102846,0.03733432367858098,-2.5289588815094186,-1.2429733332414852,2.2241775809046045,-2.9855257632681362],[0.40103072878332974,-7.708530897042777e-06,-0.7853397566034055,-5.0080322202391085e-05,-2.3562236526868063,-7.013213798665936e-06,1.5707739298445222,0.7852994046197348,-0.548475488081961,-0.13742346051607188,0.03637260110395534,-2.52940419498177,-1.2415147894864256,2.2229380546224813,-2.9845066826836777],[0.4010344933233196,-7.091998591493024e-06,-0.785338884183738,-5.375761398182272e-05,-2.356217365480433,-7.65295437794519e-06,1.5707744884650185,0.7852995078854524,-0.5475568070602972,-0.14026524012313496,0.03516486696109646,-2.529777018001016,-1.2403355055728809,2.221842204626822,-2.9827754058478386],[0.4010177088037307,-5.822625856790506e-06,-0.7853399592405469,-5.541136743833259e-05,-2.3562053772012783,-9.199953210021584e-06,1.570769356450364,0.7852997741907733,-0.5468490168667745,-0.1440153030519627,0.03338178256229164,-2.5301324326622456,-1.2392438969803894,2.2206630533965837,-2.9797823314964513],[0.40098877426593565,-4.531604257058948e-06,-0.7853439130455624,-5.551699752059246e-05,-2.356195799147272,-1.1023277739320198e-05,1.5707596570354279,0.7853000546923588,-0.5465601963246518,-0.1474692655470719,0.03161565139458497,-2.5303626754551583,-1.2385744774021734,2.21976857466313,-2.97651050259979],[0.4009406464380928,-2.528843963768999e-06,-0.7853531868655691,-5.4328298708562014e-05,-2.356187280293852,-1.3962017043973777e-05,1.5707410855363242,0.7853004171302269,-0.54655388688864,-0.15207072629034987,0.029128414470623715,-2.5305686141765813,-1.2380282971056706,2.218776277763317,-2.971623786244155],[0.4008919538675216,-5.038145964307607e-07,-0.7853641264082895,-5.283204370336072e-05,-2.356181478127509,-1.7029077236559605e-05,1.5707217673492357,0.7853006553635822,-0.5468130676299755,-0.1563286547859563,0.026727010576246716,-2.5306866142881277,-1.2377673516903622,2.217998337971551,-2.9667314694365796],[0.40082570658718497,2.0541943288043572e-06,-0.785376620212644,-5.044965872262648e-05,-2.3561755828378597,-2.1355555259632484e-05,1.5707014165868072,0.785300674367721,-0.5474171023246669,-0.16199225246474688,0.023435222582897933,-2.5307693876913375,-1.2376653397373851,2.217104988199312,-2.9598557197880933],[0.40076600529564516,4.229867979156212e-06,-0.7853857438065194,-4.807742784755834e-05,-2.35617164368745,-2.5137913455771496e-05,1.5706870054782704,0.7853005880901425,-0.5481525298903098,-0.16720355324030758,0.020339804007174597,-2.5307931646083794,-1.2377416834978587,2.2163816320726224,-2.9532749865453143],[0.4006911683858745,6.828381855449181e-06,-0.785395277209414,-4.4974159415723034e-05,-2.3561678947393268,-2.964388863555643e-05,1.5706722919429972,0.7853004629541214,-0.5493009182816294,-0.17408017594315492,0.016190387202393238,-2.530771538977947,-1.2380113808706508,2.2155254049563724,-2.944341224339383],[0.40062683175042696,9.4551844014961e-06,-0.7853984124277801,-4.476725861231985e-05,-2.356167912227034,-3.4649535000887626e-05,1.570661871362727,0.7853003236677164,-0.5504894707368864,-0.1804532335087196,0.012298911630866131,-2.530727632376838,-1.2383888280576254,2.2148067379162724,-2.9358389768949342],[0.40054959789202854,1.204625419776966e-05,-0.7854076679076446,-4.09473391501186e-05,-2.3561647711614566,-3.9545890953796825e-05,1.5706510537825884,0.7853003033555215,-0.5521918590420383,-0.1888541094898869,0.0071231669697357685,-2.530611430922009,-1.2390030161699062,2.213926715802122,-2.9245075516522063],[0.4004860753784568,1.4353221381889892e-05,-0.7854122849124527,-3.913464221798248e-05,-2.356163395819386,-4.350846599026378e-05,1.5706436209560133,0.7853002859449244,-0.5538170834701117,-0.1964686616396098,0.0024026708269043228,-2.5304831435410082,-1.2396419716539673,2.213177859345063,-2.9141046722303057],[0.40042418391206874,1.622946652667081e-05,-0.7854186704312376,-3.592969576970481e-05,-2.356161106200697,-4.679695458913665e-05,1.570637068359887,0.7853003378841723,-0.5556328143337189,-0.2046563959900281,-0.0026955346247381677,-2.530316031608553,-1.2403885866687543,2.2124077712090284,-2.9028540133316],[0.4003530635564881,1.8275015547037392e-05,-0.7854251604626066,-3.230574817777291e-05,-2.356158411809859,-4.987965063940029e-05,1.5706305633212223,0.7853004163542818,-0.5580353209083148,-0.2151790220048574,-0.009270767510956767,-2.530075935896773,-1.2414132106581046,2.211456887483951,-2.888306207179024],[0.4002964428281555,2.0034363668134206e-05,-0.7854268281541802,-3.1403565801520515e-05,-2.3561582407840977,-5.285201497230644e-05,1.570626047701121,0.7853004445391512,-0.5602235859998459,-0.22457232518379605,-0.015155634570309618,-2.529855074705269,-1.242375698523887,2.2106366730851286,-2.8752295131116328],[0.40023185943667516,2.173952516367564e-05,-0.7854314099382954,-2.8910200709875345e-05,-2.356157028041159,-5.621110842815635e-05,1.5706211189547499,0.785300546442565,-0.5630928990940348,-0.2366615755889539,-0.02274568213601727,-2.5295475708099118,-1.243660147279276,2.2096074892996964,-2.8583568322184365],[0.4001807047559305,2.3279819523695286e-05,-0.7854327082470529,-2.8656173396469124e-05,-2.3561572489808613,-5.964318094267378e-05,1.5706177393296814,0.7853006038543682,-0.5656831044915535,-0.247449246910797,-0.029528992933558176,-2.529270113968359,-1.2448407417838074,2.2087099425469203,-2.84323066861338],[0.4001322136702428,2.472345037206103e-05,-0.7854344462625364,-2.833451666814272e-05,-2.356157066293043,-6.300289290551739e-05,1.5706148387393215,0.7853006773770417,-0.5684563194757294,-0.25888940697191637,-0.03673083581326011,-2.528965214383958,-1.246117371542241,2.207772912063355,-2.827158210640217],[0.40007843048588704,2.6149389753513856e-05,-0.7854407187005299,-2.517023580390202e-05,-2.3561537465612643,-6.515891954581577e-05,1.5706119721293512,0.7853008348667163,-0.5720057617287474,-0.27338611264868284,-0.04586650089356096,-2.5285502081079714,-1.2477587858561479,2.2066001579011116,-2.8067988324021425],[0.400037644088197,2.7106399621552667e-05,-0.7854441819377992,-2.2958492993204612e-05,-2.3561516690789235,-6.620826876786686e-05,1.5706100511072865,0.7853009397264781,-0.5751285594895079,-0.2860618369189981,-0.05386128308002465,-2.5281832427767887,-1.2492104622589597,2.205584639527597,-2.788971748717628],[0.3999927543875751,2.801155665807463e-05,-0.7854466298414212,-2.141859014848944e-05,-2.3561500979416587,-6.723771393589117e-05,1.5706080919546421,0.7853010277185122,-0.5790718275960997,-0.3019979052788908,-0.06391666285949393,-2.5277123656767153,-1.2510567502996246,2.2043209465379987,-2.766531729821886],[0.3999586025045097,2.8749668692246746e-05,-0.7854481869948166,-2.0568295114971116e-05,-2.35614916326154,-6.811002442704074e-05,1.5706066814971715,0.7853010812136367,-0.5825191316367361,-0.31589005344427334,-0.07268582743745376,-2.5272979232689994,-1.2526791200268566,2.2032272219710234,-2.7469500394510487],[0.3999212389054348,2.959273678066299e-05,-0.7854497828711792,-1.994116633158685e-05,-2.356148155959723,-6.929048142894738e-05,1.5706052573414262,0.7853011310206751,-0.5868447217333961,-0.3333023810287279,-0.08368099571698216,-2.5267752816188493,-1.254725563211607,2.20186403643017,-2.7223858367676965],[0.39989309289383396,3.016384025177323e-05,-0.7854508660570649,-1.9545034468300383e-05,-2.3561475039588156,-7.025094789046238e-05,1.5706042479636761,0.7853011677127658,-0.5906110692739575,-0.3484360423895042,-0.09323893200838262,-2.526318858206181,-1.2565132423131922,2.200685030670717,-2.701021487841347],[0.3998628553092817,3.08089942050858e-05,-0.7854521212139297,-1.9237799792684746e-05,-2.356146734619307,-7.133354877217152e-05,1.570603218551446,0.7853012076427106,-0.5953294262744924,-0.3673507969895899,-0.10518716900659664,-2.52574575991645,-1.2587566286410203,2.199217057970467,-2.6743054845356835],[0.39984020594914516,3.1406901650778526e-05,-0.7854511489188365,-2.0669717527500437e-05,-2.356147083100285,-7.284967865086824e-05,1.570602667095318,0.7853011990552752,-0.5994307126181969,-0.3837694745049052,-0.11555955132816145,-2.5252533668317008,-1.2607122048268438,2.197949181333429,-2.651080653846547],[0.3998144517694285,3.200090207535137e-05,-0.7854471100470929,-2.5012181605646605e-05,-2.356150482054484,-7.711015625092753e-05,1.570601511605516,0.7853011826318542,-0.6046149485712878,-0.40451189611391203,-0.12866537746433482,-2.5246491717235795,-1.2631912239615155,2.196348697603891,-2.6216965695415144],[0.3997951903821375,3.272053182027804e-05,-0.785449451373394,-2.3335182922348305e-05,-2.3561469533430404,-7.85637988958302e-05,1.5706008838509733,0.7853012989406433,-0.6091340705467647,-0.4225406327351529,-0.14005797616978913,-2.524092718015916,-1.2653475132978633,2.1949606205282337,-2.596213452149334],[0.39977654181025823,3.342504555335612e-05,-0.7854496835794679,-2.078821448458298e-05,-2.356143219508275,-7.882301069629511e-05,1.570600560477504,0.7853014114897575,-0.6147471167735195,-0.44490727774306993,-0.1541921781572209,-2.5233937491600757,-1.268025110681351,2.1932411436089643,-2.5646057204956145],[0.3997647773795451,3.3789764675195435e-05,-0.7854476540087577,-1.9301746556555335e-05,-2.356141445751487,-7.86588804464316e-05,1.5706003179875656,0.7853014673439035,-0.6195801072059182,-0.4641534060604968,-0.1663543306225139,-2.522791333105614,-1.2703324879201565,2.191763491802619,-2.5374029718656215],[0.39975502717695677,3.413207687636779e-05,-0.7854432281278845,-1.810264628242239e-05,-2.3561400525925826,-7.84339672213652e-05,1.5706000434037886,0.7853015004570478,-0.6255681921316025,-0.48798705025009503,-0.18141573538585082,-2.5220460051757403,-1.2731933449068238,2.1899350008971226,-2.503708791557045],[0.399750450977776,3.4413241871333384e-05,-0.7854380890920759,-1.7361170381817872e-05,-2.356139050980535,-7.831538064282616e-05,1.570599850937506,0.7853015112276218,-0.6307166602160998,-0.50846857750083,-0.19435939811770597,-2.5214060513117844,-1.2756541625526716,2.188364038068938,-2.474748594972343],[0.39974913460677874,3.475448551885019e-05,-0.7854301997787005,-1.6670474171024827e-05,-2.3561379744851974,-7.834123413812463e-05,1.5705996575174224,0.7853015138171443,-0.6370860804955342,-0.5337992384714085,-0.21036773705256226,-2.5206157009438144,-1.2786993104523705,2.186422192936213,-2.4389264705100064],[0.39975161361600536,3.511141400914067e-05,-0.7854239705281993,-1.6135786187576555e-05,-2.356137292002334,-7.852388067858862e-05,1.5705994978271058,0.7853015149169359,-0.6425545510084536,-0.5555418360452894,-0.22410692709937138,-2.5199331942794263,-1.2813171949780349,2.184756575844282,-2.4081772590164574],[0.3997584846530901,3.549259983469023e-05,-0.7854167648860649,-1.5849097037657888e-05,-2.3561361621486254,-7.893268512262176e-05,1.5705994389162203,0.785301513868116,-0.6493132123299051,-0.5823933834822237,-0.24108303316797589,-2.5191039385382457,-1.2845455084611603,2.182695490558631,-2.370192770699589],[0.3997670826981469,3.579680931976856e-05,-0.7854115033084381,-1.5692114395417843e-05,-2.3561353801088605,-7.931444363682204e-05,1.5705993939910805,0.7853015155022618,-0.6551049748407051,-0.6054037379711383,-0.2556286020507887,-2.518389777377086,-1.2873152504332224,2.180931008111005,-2.3376409516947922],[0.3997804094564019,3.609541491027018e-05,-0.7854062612063883,-1.555349184809134e-05,-2.3561345923118253,-7.990457342240855e-05,1.570599345759321,0.7853015204047834,-0.6622466316178026,-0.6337872444345234,-0.2735668776069019,-2.517507388636764,-1.2907325676143122,2.1787602220421105,-2.2974866168574968],[0.39979915782742637,3.65225656454821e-05,-0.7854021996362706,-1.4875643801455093e-05,-2.3561341392969664,-8.052554217199279e-05,1.570599211988453,0.7853015355052976,-0.6695977186004969,-0.6630161257049245,-0.2920313542198225,-2.5165919458824413,-1.2942552477342815,2.176529641306618,-2.256137960481962],[0.3998193911180215,3.6935206299177155e-05,-0.7853997507400631,-1.4179268040557256e-05,-2.356133457041954,-8.104909928928635e-05,1.5705991450931975,0.7853015525398046,-0.6758872034648621,-0.6880209234108954,-0.3078269115375093,-2.5158077498327995,-1.2972692538489567,2.174621704056143,-2.220765400948853],[0.39984909435683774,3.740964663696695e-05,-0.7853974474162181,-1.3383779205222729e-05,-2.356132446346744,-8.168196628262316e-05,1.5705991186831516,0.7853015740111043,-0.6836310411631846,-0.7188036469025073,-0.32727238626231014,-2.514842031158678,-1.3009802678266786,2.17227298538381,-2.177219126446173],[0.3998717018601946,3.651431448215699e-05,-0.7853882814168694,-1.7534308142995012e-05,-2.3561380679121373,-8.37526795068192e-05,1.5705988554134902,0.785301534411839,-0.6889540138731665,-0.7400274282737389,-0.3406786604796884,-2.514216593191789,-1.3035475139138688,2.170656512953692,-2.1471040473718053],[0.39990141550264624,3.468309614084362e-05,-0.7853841390448159,-2.0955534806487865e-05,-2.3561429924053554,-8.504614759679583e-05,1.5705980722816704,0.785301669026979,-0.6959055495243569,-0.7677540597891916,-0.3581912722460961,-2.513411919187604,-1.306900528526299,2.168544688987564,-2.10774928643271],[0.3999444721475653,3.3686252887686746e-05,-0.7854059733788991,-5.142218234120327e-06,-2.3561296299801775,-7.65123659790198e-05,1.5706019523788544,0.7853019528528689,-0.7044078292243677,-0.8014160547551683,-0.3794550595512022,-2.5122984256363505,-1.3109456983524752,2.165972910709588,-2.060307262552508],[0.3999792618970232,3.252505006753566e-05,-0.7854066376168818,1.5661081894630195e-07,-2.3561300254263626,-7.157739916811678e-05,1.5706044749225887,0.7853019391588318,-0.710098773286001,-0.8239922943546935,-0.3937164243907673,-2.5115649355815406,-1.3136646836605692,2.164249806089903,-2.028417931195754],[0.40003782961878476,2.969384830075614e-05,-0.7854093707866698,8.378575227150997e-06,-2.3561340239800663,-6.432311573889659e-05,1.5706065642449154,0.7853019077047727,-0.7187411142941487,-0.8582177567154351,-0.41533490278403556,-2.510439805807485,-1.3177956938686617,2.1616342428520836,-1.9801444137401327],[0.4000926023953863,2.567545020509149e-05,-0.7854187868400616,2.0069321955012418e-05,-2.356140168130444,-5.316628658269572e-05,1.570614824858864,0.7853017094239808,-0.7259173520034428,-0.886558953200142,-0.43323636830191153,-2.509472690233315,-1.3212233655353867,2.1594540356308576,-1.940253830322537],[0.4001639408436258,1.9833630075174033e-05,-0.785427820633131,3.0587987081589626e-05,-2.3561502216307577,-3.663637846412622e-05,1.5706336631300786,0.7853011984056696,-0.7344123534496024,-0.9200963679381223,-0.45442019151782825,-2.508331813785338,-1.3252756796151564,2.156857562382277,-1.8930541939295977],[0.4002259441371712,1.4696584089945575e-05,-0.7854301471703943,3.614146447321517e-05,-2.3561597808262826,-2.247485644177977e-05,1.5706543293360828,0.7853006911521556,-0.7413799074636558,-0.94760587006441,-0.47179660351083785,-2.5074094832673794,-1.3285980675091504,2.1547301679285042,-1.8543250463518797],[0.40030095665995347,8.673114618516199e-06,-0.7854299813592582,4.008810645846578e-05,-2.356171210136985,-6.1906920265130135e-06,1.5706799009357477,0.7853002151898805,-0.7495957723276251,-0.9800482589175892,-0.4922886786522412,-2.5063386835958315,-1.3325148596494463,2.152224604030637,-1.808633288555609],[0.4003622996324137,3.8103038197473572e-06,-0.7854287888247332,4.18466523831391e-05,-2.356180107098564,6.437550764952937e-06,1.570697978199357,0.7853000024900706,-0.7563135357006991,-1.0065759027239134,-0.5090447797450215,-2.5054756921973222,-1.3357165451707522,2.1501779625218806,-1.77126115815323],[0.40042147101462994,-1.1853317957001239e-07,-0.7854255954515064,4.1276904597558524e-05,-2.3561879631288747,1.7391130349854157e-05,1.5707132503319383,0.7852998531869732,-0.7629098833835041,-1.032643348574745,-0.5255106967233936,-2.504643687353645,-1.3388583829997787,2.1481749212947268,-1.7345023705476543],[0.4004911299202032,-2.760806267649578e-06,-0.7854180415282647,3.5324755883438594e-05,-2.356197226912272,2.1604018536798654e-05,1.5707231558805235,0.7852997953021416,-0.7707948375630039,-1.063896385405835,-0.5452497969425181,-2.5037031591594556,-1.3426334864790352,2.1457874624687427,-1.690331560137116],[0.40054316502348203,-6.816596390899563e-06,-0.7854233345313475,3.772083229342504e-05,-2.356199571812518,2.9632139104904926e-05,1.5707350744773012,0.7852997403105662,-0.7772423321218391,-1.089335279074905,-0.5613185745795503,-2.502892001046784,-1.3457009398994801,2.1438263366722734,-1.6544894067341203],[0.40059915810004837,-1.1665165233299363e-05,-0.7854232772910142,3.858361618295951e-05,-2.3562054470381515,4.0364030811125415e-05,1.5707472964052462,0.785299663177066,-0.7847716960084178,-1.119045691315652,-0.580087197686535,-2.5019544175206256,-1.349283678220526,2.141537303746367,-1.6126128812554201],[0.40063979716418113,-1.5497226646747324e-05,-0.785420983839073,3.798722879104357e-05,-2.3562115396525383,4.876079100315423e-05,1.5707557221660629,0.7852995665596704,-0.7908725420625131,-1.1431252456144865,-0.5953000357655577,-2.501206207678407,-1.3521876983727663,2.1396831143075814,-1.5786575175650224],[0.40068068236150395,-1.9612018755639258e-05,-0.7854178089825898,3.6349978478305406e-05,-2.356218903209092,5.720200452976818e-05,1.5707641103211705,0.785299412138297,-0.7979857720370104,-1.1712089104374053,-0.613043988569209,-2.500347151042609,-1.35557506960786,2.137521681244483,-1.5390374569981544],[0.4007078695582151,-2.260139417849252e-05,-0.7854154972262584,3.4590071224156516e-05,-2.3562246342580666,6.3040229218306e-05,1.5707699084480995,0.7852992743478253,-0.8037411441699321,-1.1939378340077564,-0.627405864835059,-2.4996618371916477,-1.3583168914948354,2.1357731177305856,-1.5069585086463648],[0.40072984132754114,-2.3854222774805485e-05,-0.7854114685175595,3.092459698361403e-05,-2.3562302703617917,6.679822399419164e-05,1.5707744187195787,0.7852991143611064,-0.8093478332905899,-1.2161236567729603,-0.6414247309698456,-2.499013922375679,-1.360986010662471,2.134078282861163,-1.4755921916485215],[0.4007501532421199,-2.592997054931608e-05,-0.7854116318304847,2.778461227884387e-05,-2.35623514601002,6.865029086080636e-05,1.5707785421477856,0.7852989954687981,-0.8159465174174031,-1.2422229847268915,-0.6579177197561693,-2.498257694478091,-1.3641376400914902,2.1320818660721126,-1.438715549655952],[0.40075969482876495,-2.857013733282068e-05,-0.7854132403091083,2.6937372978379728e-05,-2.3562379009393393,7.297671530915376e-05,1.5707829127685538,0.7852989339338565,-0.822321763456669,-1.2673981377607775,-0.6738290221836071,-2.4975136474410067,-1.3671752979633984,2.1301435394620634,-1.4031697649441819],[0.4007603123837141,-3.0627779488495116e-05,-0.7854129824550848,2.5992651585991916e-05,-2.356241126016867,7.645828615730768e-05,1.5707858754316297,0.7852988652293994,-0.827451527612163,-1.2876600431575778,-0.6866365586722756,-2.4969201140200945,-1.3696203301693786,2.1285840144457704,-1.3745527142327665],[0.4007546799078358,-3.24421069067164e-05,-0.785412374310845,2.4934664576973445e-05,-2.3562445802239638,7.937550882701265e-05,1.5707883033710393,0.785298785157767,-0.832416248290149,-1.3072766265935327,-0.6990374872967405,-2.496351345402753,-1.3719877446473703,2.1270745674961393,-1.3468387627922742],[0.4007420609881338,-3.3313007687217376e-05,-0.785411081331882,2.276123911428388e-05,-2.356249998292254,8.109131818049416e-05,1.5707902518921548,0.7852986777865133,-0.8381740511477255,-1.3300646371087883,-0.7134437450572796,-2.495709796681383,-1.3747370020004415,2.1253312130089785,-1.3146080581346582],[0.4007254796248976,-3.46119607184178e-05,-0.7854121457057321,2.2006303514694784e-05,-2.3562520107545546,8.290244982162561e-05,1.5707918993222358,0.785298637995481,-0.842813337062353,-1.348406678967292,-0.7250411536501652,-2.4951877540367637,-1.3769511539462638,2.1239217647784994,-1.2886834164687595],[0.40069824456510716,-3.601898424456334e-05,-0.7854131499902334,2.1487957020481745e-05,-2.35625430826944,8.526314519522155e-05,1.5707935674282227,0.7852985939584213,-0.8481643196974361,-1.3695636502591126,-0.7384198258521311,-2.494587021614791,-1.3795050408620624,2.1222932180195277,-1.2587767212046612],[0.40067022192903445,-3.697329297095891e-05,-0.7854136809189698,2.1110302545649797e-05,-2.3562564245073685,8.689791603501198e-05,1.5707946489793407,0.785298553255933,-0.8524434624793079,-1.3864900481593907,-0.7491244517860103,-2.4941106938778304,-1.381548505324374,2.120991155732736,-1.234843430376],[0.40063091973042225,-3.788471189583963e-05,-0.7854144611289591,2.081336781298986e-05,-2.3562588019467756,8.855475222422206e-05,1.5707956617022887,0.7852985103059765,-0.857364558783908,-1.4059633112030083,-0.7614411471998324,-2.493567119671446,-1.3838996429546835,2.119497395876319,-1.2073027513643833],[0.40058628512044,-3.8549320086219845e-05,-0.7854155133102075,2.07103580893526e-05,-2.3562609014906504,8.994569135488531e-05,1.5707964245317594,0.7852984785337018,-0.8620550394272226,-1.4245324531943948,-0.7731872945145966,-2.493053223725113,-1.38614181936406,2.1180811475343715,-1.1810346290540914],[0.40054560570366016,-3.893576999462888e-05,-0.785416596373426,2.078025612496012e-05,-2.356262416271788,9.094186551501327e-05,1.5707969107595992,0.7852984611773242,-0.8657892094632992,-1.4393215950602227,-0.7825432262048546,-2.492646789005711,-1.38792770829115,2.116960739818336,-1.1601096682825658],[0.40049329181718885,-3.924002525422384e-05,-0.7854180947349355,2.104830131353097e-05,-2.3562639543609367,9.197716514124866e-05,1.5707973537518256,0.7852984506054157,-0.8700624689846956,-1.4562522451016455,-0.7932547597438326,-2.492184272354209,-1.389972297780545,2.11568544360476,-1.1361509963718297],[0.40044732423050183,-3.937805398591624e-05,-0.7854194602586332,2.1415230002222272e-05,-2.3562650260411746,9.27035318795135e-05,1.5707976284816387,0.7852984500966912,-0.8734516160339012,-1.4696849103251963,-0.8017538468718705,-2.4918192765574148,-1.3915945329434458,2.114672314811254,-1.1171397554442102],[0.40040150322420087,-3.885293680485762e-05,-0.7854207165882162,2.161056747115893e-05,-2.356266648702037,9.241117183173881e-05,1.5707975701574535,0.7852984492244075,-0.8766987264370436,-1.4825755273376822,-0.8099095984616224,-2.4914776675258032,-1.3931526257386426,2.1136987198011004,-1.0988765937154523],[0.4003446882327121,-3.849410648215604e-05,-0.7854228279781075,2.2135975319178977e-05,-2.3562674939457326,9.228317698459591e-05,1.5707976476655006,0.7852984677455778,-0.8804021577834811,-1.4972712898775975,-0.8192084875298776,-2.4910850572162397,-1.394928207797146,2.112586496626881,-1.078063893786271],[0.4002959006048179,-3.865932361886408e-05,-0.7854246828504519,2.2744047940303207e-05,-2.3562673335576143,9.249969695601641e-05,1.5707978787239858,0.7852984950560002,-0.8833269956946754,-1.5088695781259522,-0.8265489379357871,-2.4907715936613313,-1.3963284361876003,2.1117068276237085,-1.061650960696343],[0.40023532845278165,-3.8662412626489024e-05,-0.7854264667022893,2.3638302260118362e-05,-2.3562675769007595,9.319425330707467e-05,1.5707980291899615,0.7852985242093465,-0.8866275881059943,-1.5219618064442333,-0.8348350467747133,-2.490418382140341,-1.3979096071810682,2.110712610750226,-1.0431168540897298],[0.40018453870950793,-3.85746291263199e-05,-0.7854276592410755,2.4398115380529332e-05,-2.3562678413192613,9.33388106750687e-05,1.5707980787062223,0.7852985364263968,-0.8892114824542539,-1.5322172610260612,-0.8413266105727943,-2.490144096413376,-1.3991479297425247,2.1099328909527593,-1.028599799437383],[0.40013291682312696,-3.8683800735241705e-05,-0.7854289017043906,2.5273838162760812e-05,-2.356267853172037,9.373401772795672e-05,1.5707981976351753,0.7852985520618552,-0.8916392421102082,-1.5418519134798976,-0.8474259114313748,-2.4898856102164686,-1.4003111138099136,2.1091995070480687,-1.0149636615986433],[0.40008164351710734,-3.8481453523471314e-05,-0.785429967756919,2.6166955220086267e-05,-2.3562682880060417,9.401030823041087e-05,1.570798180686257,0.785298565441823,-0.8939133284677084,-1.5508865612664051,-0.8531453015350879,-2.489647139490283,-1.4014025534890935,2.1085114277520534,-1.0021674042324393],[0.40002081048799815,-3.837854425610947e-05,-0.7854314401695788,2.7214474434337273e-05,-2.3562682847357386,9.42866801139717e-05,1.5707982126446824,0.7852985856492384,-0.8964460297538156,-1.5609491301336769,-0.8595164404512948,-2.489381733706698,-1.4026178345991087,2.107744182693543,-0.9879187500837149],[0.39997085590221243,-3.810015005741413e-05,-0.7854325565033559,2.8143606222519014e-05,-2.3562684961093256,9.443432633488923e-05,1.5707981287184134,0.7852986012897722,-0.8983894851177999,-1.5686767645531545,-0.8644092064562444,-2.489180265642562,-1.4035515303764945,2.1071547154843713,-0.9769708154152474],[0.399920911603593,-3.819466059046461e-05,-0.7854337375500912,2.907278538520599e-05,-2.3562681021999374,9.492747061540471e-05,1.57079822748841,0.7852986189107752,-0.9001792546585613,-1.5757868243337525,-0.8689121967049876,-2.488992127478533,-1.4044098672424743,2.1066116357956517,-0.9669071324779609],[0.39987122362443744,-3.8334286964510825e-05,-0.7854347134020172,3.006432216170964e-05,-2.356267775255654,9.544147118707075e-05,1.5707983150944773,0.785298630201303,-0.9018107816416039,-1.5822691281829249,-0.8730181837126916,-2.488820862046927,-1.4051923328100961,2.1061161821127796,-0.957732950167729],[0.3998115774728464,-3.866612568170264e-05,-0.7854357075021596,3.133047425788595e-05,-2.3562673172306288,9.601803099821092e-05,1.5707984345943848,0.785298632857183,-0.9035532480836252,-1.5891902911572566,-0.877403274488974,-2.488637220100694,-1.4060274613595383,2.1055866748189866,-0.9479417653920705],[0.39976257236334406,-3.882004100176657e-05,-0.785436355770898,3.24564557793459e-05,-2.3562672092436183,9.644605180219123e-05,1.5707984774975488,0.7852986310578659,-0.904824443281029,-1.5942438749923566,-0.8806056870479885,-2.4885052238783096,-1.4066374293549706,2.105199860671829,-0.9407901112234889],[0.3997054630701378,-3.885520432073169e-05,-0.7854371185758431,3.3829785118902445e-05,-2.35626720823878,9.691016543059836e-05,1.5707984801812707,0.7852986306627504,-0.9061356706044225,-1.5994623689324716,-0.8839133466154756,-2.488372030505827,-1.4072675386708664,2.104800225164726,-0.9334018259176138],[0.3996606472230945,-3.841833987195283e-05,-0.7854377969176111,3.496986454572936e-05,-2.3562676507191953,9.701481726784256e-05,1.5707983715158922,0.785298633748222,-0.907056098224064,-1.603137669985437,-0.8862427279813192,-2.4882842482322842,-1.4077122789011973,2.104518912335256,-0.928186102528249],[0.39961352854109494,-3.701996227903739e-05,-0.7854388256148869,3.6148632843692956e-05,-2.356268766293115,9.585245145013962e-05,1.570797775456653,0.7852986492354437,-0.9079798004140436,-1.606851622822142,-0.8885955292890022,-2.4882081140483883,-1.408163565409274,2.1042352186734585,-0.9228909366287675],[0.3995814172006314,-3.529727894123921e-05,-0.7854401015351505,3.678549458903162e-05,-2.3562696225836026,9.352077905064215e-05,1.5707964887954384,0.7852986931152778,-0.9086224451303371,-1.6094547448491425,-0.8902435868530857,-2.4881645930941585,-1.4084812177743586,2.1040368563217466,-0.919160853346895],[0.3995564378034884,-3.323972781829472e-05,-0.7854417139307912,3.701681843894209e-05,-2.3562701718386365,9.005209773232509e-05,1.5707943015927681,0.7852987703735923,-0.909168162574358,-1.6116796696261793,-0.8916511418340227,-2.488135061137609,-1.4087537623067177,2.1038677422275125,-0.91595796212934],[0.39953592897249196,-3.0522843544666054e-05,-0.7854438707602835,3.671286681330816e-05,-2.356270364114405,8.471086156970336e-05,1.5707904720317074,0.7852988992823184,-0.9097156505594337,-1.6139270617184445,-0.8930714464610532,-2.4881136275560856,-1.4090302215670343,2.1036974572976583,-0.912706244138829],[0.3995263547880731,-2.8178789834844928e-05,-0.7854456744650953,3.598306025141314e-05,-2.356270165706598,7.957648812708935e-05,1.5707863778293492,0.7852990253487059,-0.910096820380158,-1.6155020394997297,-0.8940655709474067,-2.488104476001443,-1.4092247949870607,2.1035785438755696,-0.9104156389552764],[0.39952305744355016,-2.5386911489800606e-05,-0.7854476807488785,3.459065305512264e-05,-2.3562695733515606,7.294674983384511e-05,1.5707805966073398,0.7852991836254831,-0.9104794442703246,-1.6170928297589786,-0.8950682615508162,-2.488101014352729,-1.4094221577983985,2.103458901122629,-0.908090125293304],[0.399526328294163,-2.3140694320293366e-05,-0.7854491412319365,3.306467649715297e-05,-2.3562688506177936,6.726211015608066e-05,1.5707752529934236,0.7852993112845182,-0.9107459762086016,-1.618207599373566,-0.8957697970163477,-2.4881026305119898,-1.4095610583813227,2.103375414410343,-0.9064519698533218],[0.3995363589624075,-2.0593298320076718e-05,-0.785450589786316,3.089036050418094e-05,-2.3562677887826236,6.047897725157648e-05,1.5707684628495613,0.7852994503539873,-0.9110136510684727,-1.6193335026470632,-0.8964771178848439,-2.488108253997604,-1.4097019455594684,2.103291473122977,-0.9047888509362116],[0.39954892345944626,-1.8617522858131907e-05,-0.7854515330239463,2.8869421623746015e-05,-2.3562667980620184,5.4992389924066097e-05,1.5707626726864325,0.7852995503838177,-0.9112001867699748,-1.6201224548596544,-0.8969718304316344,-2.4881149934498064,-1.4098010963382757,2.103232936291815,-0.9036173046676267],[0.3995679687230876,-1.6437948218766335e-05,-0.7854523589437874,2.6286390648837916e-05,-2.356265542884783,4.87277722591677e-05,1.5707557682216957,0.7852996493566028,-0.9113875969567263,-1.6209192440906808,-0.8974704743972897,-2.488124576858488,-1.4099016619950984,2.103174096221153,-0.9024279051393209],[0.3995499208353902,-2.141207037436475e-05,-0.7854559951150846,1.6600317458082185e-05,-2.3562589875111297,5.801543232615742e-05,1.570758898830493,0.7852995260358507,-0.9113714811968313,-1.6206461772549847,-0.8973117792593959,-2.4880220780087257,-1.4098456210098107,2.103191911326043,-0.902901455262804],[0.39953391391672627,-2.268150795024609e-05,-0.785454538734303,2.0087116525450475e-05,-2.3562626246895966,6.462414939986278e-05,1.5707620359802235,0.7852993508274162,-0.9111968469997875,-1.6201001722721082,-0.8969424928673554,-2.4879944455062617,-1.4096837576205365,2.1031998499332145,-0.9035137665857942],[0.3995214028137857,-2.340155946901634e-05,-0.7854544071853522,2.3861764800500776e-05,-2.3562665669215894,6.87910749563728e-05,1.5707650816238579,0.7852991854567843,-0.9108514652713989,-1.6193923240141828,-0.8964041244367178,-2.4879484480080185,-1.4092615773281763,2.103105937805346,-0.9038169731595377],[0.39951395502237397,-2.405055627196253e-05,-0.7854572331299485,2.650128902376341e-05,-2.35627060433387,7.104276783160234e-05,1.5707671387287583,0.7852991077421511,-0.9103993990796593,-1.6187039342475602,-0.8958173192563417,-2.4878783693775337,-1.4086269107912714,2.1029106062768843,-0.9036244519058129],[0.39950677016277947,-2.5048124548898076e-05,-0.7854634772655625,2.9139710995101796e-05,-2.356277182541811,7.337077289726795e-05,1.5707693567486296,0.7852990572981912,-0.9095953497434552,-1.6176911199034378,-0.8948797019052407,-2.487747317810763,-1.4074326659672123,2.1025026758024232,-0.9027672820704847],[0.39950135607892523,-2.6039901927580177e-05,-0.785468374582662,3.104379706734635e-05,-2.3562837742491367,7.540541300132604e-05,1.5707715360056882,0.7852990200872108,-0.9086642636258477,-1.6166455683314125,-0.8938586509260341,-2.487597473749865,-1.4060150121272255,2.1019961800949836,-0.9014701490565046],[0.3994949276458658,-2.73489743329827e-05,-0.7854726062244138,3.307945627396728e-05,-2.3562907766585504,7.814046121502507e-05,1.5707751152440341,0.7852989702586592,-0.9071869770385096,-1.6150993375086888,-0.8922972743390952,-2.487372536637937,-1.4037403545806073,2.101164850711885,-0.899148729157188],[0.3994888972904167,-2.8663695907118572e-05,-0.7854750450271392,3.4535330122956654e-05,-2.356295679592386,8.073041334918652e-05,1.570778630273166,0.7852989339525807,-0.9056080252239589,-1.6135200497264623,-0.8906670126666956,-2.4871294758652525,-1.40128930150917,2.100256251732164,-0.8964925601447964],[0.3994810427385953,-3.0047977591672065e-05,-0.7854770705296765,3.62163541317589e-05,-2.35630081030137,8.38878389637194e-05,1.5707830676910457,0.7852988970543597,-0.903266827944269,-1.611243027562992,-0.8882863641791303,-2.4867733880354157,-1.3976583142620707,2.0989020901793234,-0.8924231872684889],[0.39947403462105124,-3.112854823242532e-05,-0.7854783061497903,3.753544925354269e-05,-2.3563044983417143,8.643688038504183e-05,1.5707867800512705,0.7852988728906626,-0.900928605902923,-1.609010496979302,-0.8859321509564582,-2.4864194876954104,-1.3940296386423874,2.097542727108541,-0.888269547089877],[0.3994651988305099,-3.232528633664356e-05,-0.7854795129898309,3.9044721251922655e-05,-2.356308121014703,8.931947639494905e-05,1.570791130165342,0.7852988520666992,-0.8976439082201724,-1.6059129245716628,-0.8826468197813732,-2.4859242103486308,-1.388930633475392,2.095627001735206,-0.8823520135884482],[0.3994559863022992,-3.341054285700458e-05,-0.7854804974185988,4.0498072377379295e-05,-2.356310980283274,9.199746730918067e-05,1.5707952828970786,0.7852988381723622,-0.8938158858278108,-1.6023363482967596,-0.8788370086038174,-2.4853489571115754,-1.3829878752679987,2.0933896277623707,-0.8753853404197273],[0.39944776128739334,-3.4461114893264215e-05,-0.7854812001520458,4.1685635301675685e-05,-2.356312644887565,9.42381323848695e-05,1.5707986972644665,0.7852988292855824,-0.8901798976111653,-1.598960516970117,-0.875229013664859,-2.484798725796666,-1.3773318876716387,2.09125573906946,-0.8687105274351753],[0.3994391387145256,-3.524753568587183e-05,-0.7854816686548816,4.295687651854048e-05,-2.356314194896902,9.644999955438735e-05,1.5708019946311453,0.7852988173406624,-0.8861031633022328,-1.595189946753222,-0.8711928414542365,-2.4841861982938997,-1.3710027214622686,2.0888678208292273,-0.8612103709944166]]}
diff --git a/src/dual_arm_sim/test/data/right_arm_far_block_carry.json b/src/dual_arm_sim/test/data/right_arm_far_block_carry.json
new file mode 100644
index 000000000..b4a0abf91
--- /dev/null
+++ b/src/dual_arm_sim/test/data/right_arm_far_block_carry.json
@@ -0,0 +1 @@
+{"initial_joint_positions":{"planar_x":[-0.2999586736706883],"planar_y":[3.434898445097896e-05],"planar_theta":[8.21163458567202e-05],"caster_front_left_steering_joint":[-0.0017567755743180292],"caster_front_left_joint":[3.2812570510981665e-14],"tmrv0_2_joint_0":[0.003100263601776513],"tmrv0_2_joint_1":[-8.936708421262395e-16],"rocker_arm_joint":[0.0002155951382788854],"caster_rear_right_steering_joint":[-0.000292372143904969],"caster_rear_right_joint":[-2.3898550774755346e-10],"tmrv0_2_joint_2":[0.003100263596397599],"tmrv0_2_joint_3":[1.4795343713535343e-07],"franka_spine_vertical_joint":[0.3999598033030809],"left_fr3v2_joint1":[-4.941774272360694e-07],"left_fr3v2_joint2":[-0.7854189503726593],"left_fr3v2_joint3":[-1.2181544738832533e-06],"left_fr3v2_joint4":[-2.3562034301776125],"left_fr3v2_joint5":[7.32433482685818e-07],"left_fr3v2_joint6":[1.570699786016728],"left_fr3v2_joint7":[0.7853000031541328],"left_fr3v2_finger_joint1":[1.9985819544048892e-05],"left_fr3v2_finger_joint2":[2.0014145935361738e-05],"right_fr3v2_joint1":[0.24175270106411664],"right_fr3v2_joint2":[0.7086683369626972],"right_fr3v2_joint3":[-1.0089068289857333],"right_fr3v2_joint4":[-1.8528053744695039],"right_fr3v2_joint5":[-0.4948654689202368],"right_fr3v2_joint6":[2.558921488181227],"right_fr3v2_joint7":[2.749153313617107],"right_fr3v2_finger_joint1":[0.035000574341551904],"right_fr3v2_finger_joint2":[0.03499942565879736],"block_green_1":[0.6500000000097622,0.24999972229421066,0.7799658719765066,0.9999999999998165,2.0498633621445728e-16,2.608039691337907e-16,6.071712327182778e-07],"block_green_2":[0.7499999999993183,-0.24999962625182406,0.7799658719765068,0.9999999999998122,2.1253657904474215e-16,2.888005638550084e-16,-6.145508962732913e-07],"block_green_3":[0.8499999999818988,0.24999972227890888,0.7799658719765067,0.9999999999998133,4.5548069269518756e-17,-2.980722426865292e-17,-6.120302267869005e-07],"block_red_1":[0.13799681801392455,-0.7777661434406784,0.7799658719765069,0.23158851247916568,-0.6681068484058784,-0.23158851247309922,-0.6681068484092562],"block_red_2":[0.15931995259606319,-0.7068838267191815,0.7799658719765067,-5.3080694425436616e-12,-0.11265460372786162,-0.9936342084786123,4.141230048796495e-13],"block_red_3":[0.8499999999992573,-0.24999962625521277,0.7799658719765069,0.9999999999998135,-2.243647505822219e-16,6.079181452226333e-17,-6.110826742949593e-07]},"actuator_names":["franka_spine_vertical_joint","left_fr3v2_joint1","left_fr3v2_joint2","left_fr3v2_joint3","left_fr3v2_joint4","left_fr3v2_joint5","left_fr3v2_joint6","left_fr3v2_joint7","right_fr3v2_joint1","right_fr3v2_joint2","right_fr3v2_joint3","right_fr3v2_joint4","right_fr3v2_joint5","right_fr3v2_joint6","right_fr3v2_joint7"],"time":[0.0,0.015000000000000568,0.03300000000000125,0.04800000000000182,0.0660000000000025,0.08100000000000307,0.09600000000000364,0.11400000000000432,0.1290000000000049,0.14700000000000557,0.16200000000000614,0.18000000000000682,0.1980000000000075,0.21300000000000807,0.23100000000000875,0.24600000000000932,0.26400000000001,0.2790000000000106,0.29700000000001125,0.3120000000000118,0.3300000000000125,0.3450000000000131,0.36300000000001376,0.3780000000000143,0.396000000000015,0.4140000000000157,0.42900000000001626,0.4440000000000168,0.4620000000000175,0.4800000000000182,0.49500000000001876,0.5130000000000194,0.52800000000002,0.5460000000000207,0.5610000000000213,0.5790000000000219,0.5850000000000222,0.6000000000000227,0.6180000000000234,0.6420000000000243,0.6570000000000249,0.6720000000000255,0.687000000000026,0.7050000000000267,0.7200000000000273,0.738000000000028,0.7560000000000286,0.7710000000000292,0.7890000000000299,0.8040000000000305,0.8220000000000312,0.8370000000000317,0.8550000000000324,0.870000000000033,0.8880000000000337,0.9030000000000342,0.9210000000000349,0.9360000000000355,0.9540000000000362,0.9690000000000367,0.9840000000000373,1.002000000000038,1.0200000000000387,1.0350000000000392,1.05300000000004,1.0680000000000405,1.0860000000000412,1.1010000000000417,1.1160000000000423,1.134000000000043,1.1520000000000437,1.1670000000000442,1.185000000000045,1.1970000000000454,1.215000000000046,1.2300000000000466,1.2480000000000473,1.2630000000000479,1.2810000000000485,1.2960000000000491,1.3140000000000498,1.3290000000000504,1.347000000000051,1.3650000000000517,1.3800000000000523,1.398000000000053,1.4130000000000535,1.4310000000000542,1.4460000000000548,1.4640000000000555,1.479000000000056,1.4970000000000567,1.5120000000000573,1.530000000000058,1.5450000000000585,1.5630000000000592,1.5780000000000598,1.5960000000000605,1.611000000000061,1.6290000000000617,1.6440000000000623,1.662000000000063,1.6770000000000636,1.6950000000000642,1.7100000000000648,1.7280000000000655,1.743000000000066,1.7610000000000667,1.7760000000000673,1.794000000000068,1.8090000000000686,1.8240000000000691,1.8420000000000698,1.8570000000000704,1.875000000000071,1.8900000000000716,1.9080000000000723,1.9230000000000729,1.9410000000000736,1.9560000000000741,1.9740000000000748,1.9890000000000754,2.007000000000076,2.0220000000000766,2.0400000000000773,2.058000000000078,2.0730000000000786,2.0910000000000792,2.10600000000008,2.1240000000000805,2.139000000000081,2.1570000000000817,2.1720000000000823,2.190000000000083,2.2050000000000836,2.220000000000084,2.238000000000085,2.2530000000000854,2.271000000000086,2.2890000000000867,2.3040000000000873,2.322000000000088,2.3370000000000886,2.3550000000000892,2.37000000000009,2.3880000000000905,2.403000000000091,2.4210000000000917,2.4360000000000923,2.454000000000093,2.4690000000000936,2.484000000000094,2.502000000000095,2.5170000000000954,2.535000000000096,2.5500000000000966,2.5680000000000973,2.583000000000098,2.6010000000000986,2.6190000000000992,2.6340000000001,2.6490000000001004,2.664000000000101,2.6790000000001015,2.697000000000102,2.7120000000001028,2.7300000000001035,2.745000000000104,2.7630000000001047,2.7780000000001053,2.796000000000106,2.8140000000001066,2.826000000000107,2.8410000000001077,2.8590000000001083,2.874000000000109,2.8920000000001096,2.90700000000011,2.925000000000111,2.9400000000001114,2.958000000000112,2.9730000000001127,2.9910000000001133,3.006000000000114,3.0240000000001146,3.039000000000115,3.057000000000116,3.0750000000001165,3.090000000000117,3.108000000000118,3.1230000000001183,3.141000000000119,3.1560000000001196,3.1740000000001203,3.189000000000121,3.2070000000001215,3.222000000000122,3.240000000000123,3.2550000000001234,3.273000000000124,3.2880000000001246],"commands":[[0.3999598033030809,-4.941774272360694e-07,-0.7854189503726593,-1.2181544738832533e-06,-2.3562034301776125,7.32433482685818e-07,1.570699786016728,0.7853000031541328,0.24175270106411664,0.7086683369626972,-1.0089068289857333,-1.8528053744695039,-0.4948654689202368,2.558921488181227,2.749153313617107],[0.39996442777601515,-4.54022596271001e-07,-0.7854176815841465,-1.2292700076432904e-06,-2.356202986596213,6.196110092329719e-07,1.5706998073859753,0.7853000009386428,0.24175073086670948,0.7086739462698699,-1.0089078353710195,-1.8528007420303052,-0.4948662212094149,2.5589197160965895,2.7491537964006545],[0.39996932768448784,-4.091073881194144e-07,-0.7854162539410809,-1.2191132493924172e-06,-2.356202518802462,5.049932602463106e-07,1.5706998251573843,0.7852999988665439,0.24174869937391283,0.7086799331509889,-1.0089088565454916,-1.8527955304697439,-0.49486743047249193,2.5589168675167584,2.7491544340129366],[0.3999729251301398,-3.7432102499598315e-07,-0.7854151407447434,-1.1952046260872675e-06,-2.356202177114289,4.2433899410015466e-07,1.570699834845464,0.7852999975459315,0.24174724413140225,0.7086843772566754,-1.0089095767685152,-1.852791496084605,-0.4948685679746413,2.5589141166945977,2.7491549747954784],[0.39997672370877807,-3.3564890510135646e-07,-0.7854138930402363,-1.152499211014707e-06,-2.3562018184687727,3.4269964691428186e-07,1.5706998419027283,0.7852999963593605,0.2417457403569307,0.7086891411185848,-1.0089103104875747,-1.8527870400883526,-0.49486997192897575,2.5589105984203995,2.7491556006279385],[0.399979503329738,-3.0589911358303964e-07,-0.7854129236633142,-1.1082286091250764e-06,-2.3562015579311177,2.854838596543473e-07,1.5706998450278904,0.785299995643579,0.24174466098753442,0.7086926953399824,-1.0089108303883738,-1.8527836524294836,-0.49487111019719104,2.5589076320080317,2.7491560853516743],[0.39998197029339694,-2.7831882835644195e-07,-0.7854120153821544,-1.058357820309727e-06,-2.3562013285644166,2.3669033973722293e-07,1.5706998464551776,0.7852999951309522,0.24174371760540003,0.708695918512004,-1.0089112802518594,-1.8527805593958337,-0.49487218018217904,2.5589047375438976,2.7491565269500966],[0.3999845633460422,-2.479661581250546e-07,-0.7854110022083239,-9.936169446451803e-07,-2.3562010900962256,1.876646428849979e-07,1.5706998468049236,0.7852999947344114,0.24174274038584076,0.7086994030541367,-1.0089117420927098,-1.8527772279920343,-0.49487334218339735,2.558901458935265,2.7491569936957703],[0.3999864523291681,-2.2484995106874174e-07,-0.7854102186028082,-9.372959617030904e-07,-2.3562009187074495,1.5360733905156426e-07,1.570699846555931,0.7852999945515574,0.24174203743589556,0.7087020264035168,-1.0089120720508857,-1.8527747569951196,-0.49487419456784904,2.5588989470693346,2.7491573285767874],[0.39998843193698264,-1.9957555412131368e-07,-0.7854093469618567,-8.686172587337112e-07,-2.3562007420229656,1.1964938487520016e-07,1.5706998462021862,0.7852999944727613,0.24174130838585478,0.7087048806170425,-1.0089124127847438,-1.8527721383903346,-0.49487507216846366,2.5588962429492366,2.749157667272801],[0.39998986973368916,-1.8044612390170365e-07,-0.7854086745936802,-8.115584475786802e-07,-2.356200616222055,9.627184762063661e-08,1.5706998462104975,0.7852999945006883,0.2417407833856232,0.7087070429758866,-1.0089126576614165,-1.8527702269191288,-0.49487568445046465,2.5588942657154363,2.749157900101849],[0.3999913720651895,-1.596508480934459e-07,-0.7854079284839556,-7.443689047012463e-07,-2.3562004878442906,7.320481483320397e-08,1.5706998468979825,0.7852999946217238,0.24174023837778025,0.7087094096486548,-1.0089129119854687,-1.8527682325482542,-0.49487628471187967,2.5588922289529648,2.749158125733662],[0.39999266128956557,-1.410372847513139e-07,-0.7854072442925313,-6.794520049681344e-07,-2.3562003810122425,5.4719754087736094e-08,1.5706998485378891,0.7852999948161735,0.24173977301919916,0.7087115562287505,-1.008913129801409,-1.8527665355449483,-0.49487675157763866,2.558890547830565,2.7491582995986494],[0.3999935933629158,-1.2706043374647564e-07,-0.7854067182145045,-6.275808574878187e-07,-2.356200306307901,4.225122817847691e-08,1.570699850715634,0.7852999950203988,0.24173943748369614,0.7087131956484183,-1.0089132876330944,-1.8527653258415067,-0.4948770505442793,2.5588894020396644,2.749158410389972],[0.39999456284402796,-1.1197498335576587e-07,-0.7854061360971221,-5.684121611139378e-07,-2.356200231546735,3.0231950915004753e-08,1.570699854321389,0.7852999953024216,0.2417390887597762,0.708715002677841,-1.008913452791395,-1.8527640926508262,-0.4948773161503853,2.558888306480287,2.7491585088258086],[0.39999526167487615,-1.0069260649945459e-07,-0.785405689177942,-5.218753375520134e-07,-2.356200180024422,2.2276625309144928e-08,1.5706998581203044,0.7852999955593356,0.2417388371473291,0.7087163876962518,-1.0089135729664103,-1.8527632266312823,-0.4948774714760594,2.558887602238514,2.749158566824517],[0.3999959864277946,-8.855844623467676e-08,-0.7854051952796236,-4.6950531404388935e-07,-2.3562001292755266,1.4773454559640487e-08,1.5706998635443425,0.7852999958844419,0.24173857547047264,0.7087179186213662,-1.0089136991676928,-1.8527623566870213,-0.49487759271502535,2.5588869751129675,2.7491586130983223],[0.39999650732364955,-7.951218742467186e-08,-0.7854048164950573,-4.288049710874258e-07,-2.3562000949173814,9.934406564160857e-09,1.5706998686915588,0.7852999961631623,0.24173838653785518,0.7087190945494294,-1.0089137912729162,-1.852761754716809,-0.4948776496045415,2.55888660853761,2.749158636079175],[0.39999704599784486,-6.981003360692216e-08,-0.7854043982494308,-3.83482239526508e-07,-2.356200061736365,5.5086116327237565e-09,1.5706998754811747,0.78529999650035,0.24173818991598137,0.7087203962682898,-1.0089138882266266,-1.8527611587164974,-0.4948776764951642,2.5588863243577116,2.7491586492506483],[0.39999743206039223,-6.259478633276603e-08,-0.7854040776985888,-3.485922850335628e-07,-2.3562000397747154,2.760835835618625e-09,1.5706998815327353,0.7852999967792588,0.24173804785554828,0.7087213970260954,-1.0089139591152114,-1.8527607522415166,-0.4948776723848917,2.5588861941432697,2.7491586511013018],[0.39999783021291463,-5.487303276276056e-08,-0.7854037239221601,-3.1007107498422126e-07,-2.356200019108274,3.64559356429063e-10,1.570699889116147,0.7852999971068415,0.24173789990993125,0.7087225051935797,-1.0089140338275544,-1.8527603554211791,-0.4948776443268776,2.5588861388844824,2.74915864545187],[0.399998114809462,-4.914151001850242e-08,-0.7854034528681373,-2.806504125381706e-07,-2.356200005846377,-1.0316203185717093e-09,1.5706998955895877,0.7852999973709363,0.24173779294125652,0.7087233570310616,-1.0089140884944032,-1.8527600885147202,-0.49487760739608927,2.55888615818772,2.7491586361733673],[0.39999840758688815,-4.301783103689992e-08,-0.7854031537684049,-2.4840228576346325e-07,-2.3561999938230227,-2.1463170613086827e-09,1.5706999034075344,0.7852999976741343,0.24173768146014898,0.7087242997712374,-1.0089141461240396,-1.852759831332029,-0.49487755281176904,2.558886238872668,2.749158621598189],[0.39999825047158755,-1.001854867041273e-07,-0.7854030485729512,-5.773401917959293e-07,-2.3562001042453633,-2.3294853727881965e-08,1.5706998865301531,0.7852999953237758,0.24173958114283994,0.7087226349242447,-1.0089146072939312,-1.8527529402377312,-0.49487735056376614,2.5588895504572875,2.749158641648989],[0.3999979421187524,-1.1720090355980504e-07,-0.7854029211787751,-5.61808893631864e-07,-2.3562003603191415,-3.733040235361138e-08,1.5706998711638624,0.7852999954874818,0.2417486192379975,0.7087175264462828,-1.0089131010028416,-1.8527305461065775,-0.4948779452430561,2.5589023093594396,2.7491585611977882],[0.3999980786295119,-5.560423602956792e-08,-0.7854026517688344,-6.275692052731748e-07,-2.356200071501915,-7.20460289784588e-08,1.570699891923036,0.7852999974817503,0.24174980865595583,0.7087178418555783,-1.0089139604158537,-1.8527218895105366,-0.4948797139711522,2.5589110502119397,2.74915830979154],[0.3999975354535903,-6.375675545930684e-08,-0.7854024858602526,-7.580998242885908e-07,-2.3561998447808437,-9.84909294041346e-08,1.5706998877972644,0.7852999989116095,0.24174835237851464,0.7087196087042201,-1.0089150149671928,-1.852720663692909,-0.4948812423391973,2.5589156167711957,2.749157911916199],[0.3999964269823321,-5.918153275604323e-08,-0.7854023387351187,-8.419913509504789e-07,-2.3561996565097325,-1.0186561846054689e-07,1.5706998946830075,0.7852999991125658,0.24174571153636362,0.7087213336391331,-1.0089168381242666,-1.8527216430658642,-0.49488196503734955,2.5589182865916076,2.749157849665189],[0.3999944828904799,-8.213308916935052e-08,-0.7854021310769326,-8.357633495553958e-07,-2.3561996264323772,-9.568793332271346e-08,1.5706998959936749,0.7852999984503204,0.24174362591750279,0.7087234068167798,-1.0089171089105622,-1.8527240434820953,-0.4948822478267379,2.5589199811725276,2.749157830780833],[0.39999252601316293,-7.182407888144297e-08,-0.7854019736348773,-6.277791404483032e-07,-2.356199705573716,-6.714385351601322e-08,1.5706998899025175,0.7852999988156779,0.24174220175363376,0.7087249177158013,-1.0089171526172678,-1.8527266774770348,-0.49488211927700126,2.5589202936149262,2.749157808935299],[0.39999116647568755,-4.929552571916219e-08,-0.7854018484021149,-3.951252147668829e-07,-2.356199795623871,-3.749895652541575e-08,1.5706998900545663,0.7852999994300005,0.24174137784885688,0.7087258584148216,-1.0089171104424894,-1.8527288618189979,-0.49488183007895575,2.5589197337526284,2.749157784285567],[0.39999000713549443,-1.8824078726426046e-08,-0.7854016963845815,-1.1915409119503444e-07,-2.3561999047528808,-4.1503616931439005e-09,1.5706998963058008,0.7853000003048078,0.24174071641129152,0.7087267127781078,-1.0089169852235351,-1.852731360735815,-0.49488137328245424,2.558918332170007,2.7491577489442607],[0.3999894567996458,4.059833004895607e-09,-0.7854015696461705,7.665385418177085e-08,-2.3561999844148906,1.8389677617533464e-08,1.570699905037159,0.7853000010238887,0.24174035935728921,0.7087272573272685,-1.0089168374735047,-1.852733304659352,-0.49488095894084205,2.5589167260898837,2.7491577178719497],[0.39998925139916297,2.5358950802536738e-08,-0.7854014208608662,2.5313963270027167e-07,-2.356200058612568,3.7747636971905533e-08,1.5706999180571466,0.7853000017478095,0.24174007962674662,0.7087277680591898,-1.0089166301623265,-1.8527354573411416,-0.49488046886560266,2.5589144555192327,2.7491576828923874],[0.3999893946182311,3.727800955360023e-08,-0.7854013018214901,3.494380605913607e-07,-2.356200100898275,4.76860284265106e-08,1.57069993000756,0.785300002171996,0.2417399198108131,0.7087281084583803,-1.0089164466809677,-1.8527371028898434,-0.49488008873384765,2.558912395813497,2.749157658379926],[0.3999898475579037,4.5028861646002956e-08,-0.7854011668359445,4.1026132625704476e-07,-2.3562001297052766,5.3288377428190664e-08,1.5706999446697743,0.7853000024366309,0.24173977031820582,0.7087284461688488,-1.0089162278024608,-1.8527389088046813,-0.4948796816434125,2.558909845489609,2.7491576367829604],[0.39999004901233065,4.622791973150566e-08,-0.7854011239789468,4.1918730227632755e-07,-2.3562001346284527,5.3887870976271505e-08,1.5706999494882896,0.785300002467237,0.24173972491293624,0.7087285459753586,-1.0089161571702074,-1.8527394721311723,-0.4948795591335735,2.5589089947669685,2.7491576316974147],[0.3999906278082574,4.6757304848161504e-08,-0.7854010218150245,4.2152160138161223e-07,-2.356200138454634,5.321759679754807e-08,1.5706999611296453,0.7853000024319745,0.24173961278964412,0.7087287748530167,-1.008915988921896,-1.8527408013543025,-0.4948792823512733,2.5589068990040174,2.749157623716477],[0.39999140756094576,4.3837861300385965e-08,-0.7854009088531118,3.9577387488121255e-07,-2.3562001305294658,4.939428418542914e-08,1.5706999739747758,0.7853000022180658,0.24173947204079455,0.7087290207401507,-1.008915806804671,-1.852742257892536,-0.4948790041227473,2.5589044894397452,2.74915762268895],[0.39999248210671096,3.6410698873147036e-08,-0.785400774544258,3.33267426244664e-07,-2.3562001067654466,4.145054769022336e-08,1.57069998858845,0.7853000017494266,0.24173926500412854,0.708729317659089,-1.0089156029462505,-1.8527439911048718,-0.49487871555092705,2.558901537719723,2.749157633802187],[0.39999312981968904,3.0899579633377774e-08,-0.7854006997234102,2.872990728219455e-07,-2.356200088170373,3.5857344233897016e-08,1.57069999608328,0.7853000014089084,0.24173912489691393,0.7087294920578635,-1.0089154987728979,-1.8527449678873211,-0.49487857595827606,2.558899873051357,2.7491576463875615],[0.3999937394347073,2.535230489443618e-08,-0.7854006315177287,2.4103808711752025e-07,-2.3562000688780613,3.030901937491937e-08,1.5707000022915127,0.7853000010665926,0.2417389791840566,0.7087296609422246,-1.0089154115854317,-1.8527458728503023,-0.4948784621181471,2.558898356631552,2.7491576620290497],[0.399994302436647,2.011968269878783e-08,-0.7854005695195407,1.972616626117184e-07,-2.3562000501716787,2.5091579024671448e-08,1.5707000072584458,0.7853000007433236,0.2417388307778883,0.7087298258541195,-1.0089153399237711,-1.8527467137040614,-0.49487836944182056,2.5588969895603233,2.7491576796888446],[0.3999949120246681,1.4556748091102885e-08,-0.7854005026966298,1.504009615628574e-07,-2.3562000296971415,1.9508978082585884e-08,1.5707000117071486,0.7853000003994962,0.2417386532662903,0.708730019779097,-1.008915271838057,-1.852747647902625,-0.494878280180595,2.5588955411488405,2.749157702225717],[0.39999536568126504,1.064005902001994e-08,-0.7854004527968698,1.1706312566398772e-07,-2.356200014859766,1.551884355232644e-08,1.5707000142962961,0.7853000001579825,0.24173850889647866,0.7087301786178302,-1.0089152276663427,-1.8527483712571753,-0.4948782196582697,2.5588944859817415,2.749157721191215],[0.3999958494779886,6.832804936547057e-09,-0.7854003992017411,8.418561487073544e-08,-2.35620000003264,1.1547504500044136e-08,1.5707000162686842,0.7852999999248403,0.2417383430762452,0.708730366133244,-1.0089151867211954,-1.8527491809969674,-0.4948781588780405,2.5588933879592135,2.749157743224083],[0.39999627447193165,3.937022859834179e-09,-0.7854003517794028,5.863494209419528e-08,-2.35619998843944,8.415845030305439e-09,1.5707000172383216,0.7852999997501801,0.24173818781725184,0.7087305501894844,-1.008915155842261,-1.852749934309073,-0.4948781068140473,2.558892455769079,2.7491577637153872],[0.39999658987463155,2.1324111690699315e-09,-0.7854003164893036,4.227865026133755e-08,-2.3561999810712697,6.376050187197473e-09,1.5707000174541077,0.7852999996439922,0.2417380676967282,0.7087307007154972,-1.0089151356882629,-1.852750523451901,-0.4948780675860353,2.558891791445939,2.749157779234973],[0.399996929074891,5.697621623020228e-10,-0.7854002786806424,2.7599202095984734e-08,-2.3561999746489244,4.5077382218695625e-09,1.5707000171925323,0.7852999995558085,0.24173793535127008,0.7087308775711445,-1.0089151160470193,-1.8527511883801377,-0.4948780233179875,2.5588911123011155,2.7491577957496895],[0.39999718414204394,-3.315677028651819e-10,-0.7854002505749453,1.8704347432468032e-08,-2.3561999710145094,3.3492900979979687e-09,1.5707000166708966,0.7852999995085561,0.2417378349816945,0.7087310215011938,-1.0089151020833715,-1.8527517101310316,-0.4948779875821771,2.5588906319572704,2.7491578076989276],[0.39999746271572556,-1.0515490844027772e-09,-0.7854002204907836,1.110290651559557e-08,-2.356199968329702,2.3360360961622725e-09,1.5707000158188422,0.7852999994756806,0.24173772611948638,0.7087311896917294,-1.0089150868273795,-1.8527523001086783,-0.49487794513443867,2.558890143126684,2.749157819924751],[0.39999767555084204,-1.4309521039958524e-09,-0.7854001981464359,6.690562173595461e-09,-2.356199967206904,1.735323550759612e-09,1.5707000150067585,0.7852999994629631,0.24173764456508548,0.7087313257955232,-1.0089150745511166,-1.8527527633376975,-0.4948779097289903,2.5588897979404255,2.7491578284785154],[0.3999953612815638,-8.944487992036474e-07,-0.7854026054134264,-9.585196318907773e-07,-2.3562024484311346,3.6385815319289794e-07,1.5706996442253842,0.7853000000917069,0.24176495316307378,0.7087211261820955,-1.0089226268841234,-1.8527596871149337,-0.4948795454997553,2.558884281797819,2.7491574666735454],[0.39998393293156725,-4.154322688537264e-06,-0.785406349340371,-2.0586845384332263e-06,-2.356209417386072,3.5171650714701312e-06,1.570700361660556,0.7852999556438519,0.24193465417913815,0.7086457461125545,-1.0089907349575724,-1.852812087505241,-0.49488699507267536,2.5588031485348637,2.7491547896120156],[0.39995341270984724,-9.369598040009956e-06,-0.7854114252593924,-2.4825311171614073e-06,-2.356214196411735,1.2565446322907488e-05,1.5707058142216856,0.785299797056959,0.24243098624254986,0.7083960337401587,-1.009262114007237,-1.8530101854031387,-0.4949067521509262,2.558487688700784,2.7491573034724737],[0.39990888194302476,-1.4719049992585073e-05,-0.7854153350055117,-2.192661883370437e-06,-2.356216480311101,2.349692464961788e-05,1.5707140429597568,0.7852995702631969,0.2432012059536322,0.7079944807986365,-1.00967902242419,-1.8533043350932386,-0.4949455164606041,2.5580037136564466,2.749173550273412],[0.3998324449052817,-2.0735912185382256e-05,-0.7854193490790758,-6.976731937762705e-07,-2.3562189991980187,3.5519748065252555e-05,1.5707276401242223,0.7852991310202637,0.24466894073708284,0.7072208000639422,-1.0104538521836068,-1.8538416476139192,-0.49502759427161414,2.5570972349804064,2.7492134034819737],[0.39975144463494444,-2.4888453491764265e-05,-0.7854222717961021,1.1577386636104424e-06,-2.3562212356071197,4.4059148694968054e-05,1.5707385451609244,0.785298805674266,0.24641850889008612,0.7062950868965451,-1.0113612563210153,-1.8544626023302293,-0.49512860562655187,2.5560298482071175,2.7492651489175675],[0.399634244353514,-2.911671402491956e-05,-0.7854250225470017,2.8938811713352636e-06,-2.3562236831848016,5.2701824786175476e-05,1.5707495968065548,0.7852984782196062,0.24926987726762326,0.7047901347598818,-1.012827629255181,-1.8554518944494374,-0.49529161173427033,2.55430070418269,2.7493504880599198],[0.3995243042504327,-3.1831600287775224e-05,-0.7854277691124242,6.650893176238205e-06,-2.3562265365746007,5.902800114196158e-05,1.570757088931191,0.7852982747572756,0.252313848069732,0.703190446201825,-1.0143782594510309,-1.8564729912454458,-0.4954575084874941,2.552470355856421,2.7494380544460797],[0.3994079838596895,-3.395304156458795e-05,-0.7854301626598951,1.1240532301098188e-05,-2.356229816982921,6.457307805387079e-05,1.5707633528946108,0.78529810679893,0.2559845436558097,0.7012761010787495,-1.0162409452310255,-1.8576708967731188,-0.4956452623334395,2.550272022872719,2.7495371516575164],[0.3992636409069602,-3.593578262589146e-05,-0.7854327134642944,1.7239841572346962e-05,-2.3562339383112203,7.031629605388931e-05,1.570769543050236,0.7852979351951771,0.26125924065331746,0.6985543104909113,-1.0189139876187616,-1.8593404148060388,-0.49589228929535073,2.5471208776515626,2.749666569360204],[0.39911773045033966,-3.743155354109017e-05,-0.7854349803074067,2.3481579714226433e-05,-2.3562380797160705,7.520679386761399e-05,1.5707745450386792,0.7852977863156356,0.26752681287114327,0.6953631174407807,-1.0220913862435244,-1.861255322905771,-0.496154532636676,2.543380281807482,2.7498018385459257],[0.3989974408949132,-3.838186648916824e-05,-0.7854366549015394,2.8698162282768937e-05,-2.3562414674889283,7.872199617568259e-05,1.5707779686834153,0.7852976757303052,0.27353552466677467,0.6923442040664364,-1.0251414440438391,-1.8630283711228488,-0.49638106073215643,2.5397920609675704,2.7499153050366765],[0.39885685734696213,-3.9252077479812594e-05,-0.7854383766487756,3.466938975493489e-05,-2.3562453149899416,8.23474157842904e-05,1.5707813619073698,0.7852975538654834,0.28172064359824883,0.6882893165565998,-1.0293038059120183,-1.8653537691539501,-0.49665929540449266,2.5348928363759824,2.7500495167540935],[0.39874333023543146,-3.985393157910592e-05,-0.785439478157062,3.887956365445258e-05,-2.356248101934264,8.489706147613112e-05,1.5707837464862908,0.7852974506557064,0.28938985059488176,0.6845455943067,-1.0332132632736293,-1.867445660076396,-0.4968932753583017,2.5302830563368337,2.7501582646083294],[0.398611959151876,-4.045808570527429e-05,-0.785440745670718,4.356305087211402e-05,-2.3562511318943185,8.752316582929232e-05,1.5707861157489602,0.7852973310281492,0.299654831307622,0.6796111614133078,-1.0384578847684522,-1.8701189166233543,-0.4971723738554338,2.524079747706252,2.7502831531182066],[0.3985082808279102,-4.0662541572065274e-05,-0.785441226896701,4.6709082781236065e-05,-2.3562532618178644,8.935368269281017e-05,1.5707878186321438,0.7852972288656466,0.30910527634611634,0.6751400658558445,-1.0432965910334693,-1.872457308792138,-0.4974000825508894,2.518333500739875,2.750381324081935],[0.39840334632228924,-4.148278376599044e-05,-0.7854426320048667,4.9401878983666286e-05,-2.3562549832970716,9.093550182927906e-05,1.570789219234877,0.7852971141061026,0.31950688576522296,0.6702944831255688,-1.0486400233097755,-1.8749074853449703,-0.4976217347184077,2.511954749094747,2.750473732034958],[0.39831034422581224,-4.046468449939436e-05,-0.7854466016471643,6.392916420813727e-05,-2.3562621578112184,9.368238236475592e-05,1.5707893652926013,0.7852972353376483,0.33275095244734,0.6642045846095024,-1.0554038949297935,-1.8777984192456716,-0.49786987095410185,2.503824248028574,2.7505749277230107],[0.3982673971044274,-3.671932861457047e-05,-0.7854495598512178,7.666877493892399e-05,-2.356270620517624,9.56104531708792e-05,1.570789017431026,0.7852974739790363,0.3465251246450577,0.6579658079638697,-1.062419708470017,-1.880592822381188,-0.4980947617318659,2.4953233173497256,2.7506685409304215],[0.3982739643500421,-3.135177707708091e-05,-0.7854511725709264,8.338880091224032e-05,-2.3562770506514457,9.321169538816765e-05,1.5707881971670818,0.78529769669568,0.35819668991728376,0.6527490816860498,-1.0683546815107807,-1.8828090774711514,-0.4982622853212161,2.4880798545484377,2.75074445268381],[0.39833156900898864,-2.3334943426032375e-05,-0.7854420978632819,8.627708577357916e-05,-2.356278507492088,8.39894908940645e-05,1.5707866037049618,0.7852979957247797,0.37221728823153133,0.6465618112039124,-1.0754767521110777,-1.88530330379607,-0.4984409041246032,2.479325868084846,2.750834096547146],[0.39839607775475705,-1.897456461442578e-05,-0.7854337319409953,8.478771774774764e-05,-2.3562720969251174,7.492120052368764e-05,1.5707848443023429,0.785298268720376,0.38150236715035907,0.6425145749441692,-1.0801964422557626,-1.886864056955293,-0.4985491927830327,2.4734895996105593,2.7508914003022733],[0.39852059567500253,-1.0645449231596667e-05,-0.7854232985807176,7.860804413620874e-05,-2.356259121429022,5.9010437485719064e-05,1.5707795315860509,0.7852987389122598,0.39530843631611506,0.6365619063168438,-1.087216153671336,-1.8890494828945323,-0.49869750113112543,2.4647510236667913,2.7509701305586467],[0.39865632486860864,-1.9632226087676867e-06,-0.7854152531143903,7.18214273004009e-05,-2.3562479984782003,3.9788568008145536e-05,1.5707703296574738,0.785299212578448,0.40643666580855786,0.6318147383916722,-1.092859984358305,-1.8906890309700672,-0.49880872778312774,2.457678247104229,2.7510279615249598],[0.3988475765328487,6.461430771216066e-06,-0.785405701924656,6.04615636221815e-05,-2.356234590016519,1.742805650164404e-05,1.570755118602191,0.7852999108591873,0.41925215121466186,0.6264077114606426,-1.099363547752669,-1.8924679616288607,-0.49892916925369307,2.4494776119953476,2.7510869008768037],[0.3990236075395592,1.2667474473525979e-05,-0.78539932445666,5.044722800231043e-05,-2.356224059844747,1.4834072511227425e-06,1.5707397312687303,0.7853005368684195,0.42940845855804427,0.6221629236642717,-1.1045147757923002,-1.8937912142247049,-0.49901815086289014,2.4429449935727883,2.7511283035372083],[0.3992500324021109,1.871163451499602e-05,-0.7853922364374651,3.783870495957135e-05,-2.3562121411307992,-1.4926004173364602e-05,1.5707192532403964,0.7853012229398311,0.4408441641119792,0.6174238518952199,-1.110312765469771,-1.895199465085472,-0.49911183586859115,2.4355543789701097,2.751170107835795],[0.399445346524146,2.2686345739572716e-05,-0.7853868842315691,2.6756215693344783e-05,-2.3562026090672252,-2.6680802097503442e-05,1.5707024617333094,0.7853016481845327,0.44969878038557515,0.6137820833650565,-1.1148024801794658,-1.896236124809155,-0.49917840877656267,2.42979004457547,2.7511992900307978],[0.3996810904423472,2.6449023093135616e-05,-0.7853812021952846,1.3304027116079794e-05,-2.3561916838539583,-3.8803249090923006e-05,1.570685572033803,0.7853019363652601,0.45946299268792135,0.6097922374939576,-1.119755078125551,-1.8973301194412182,-0.4992473939826224,2.4233954884853603,2.7512285383523065],[0.39987461528247886,2.891170219876851e-05,-0.7853771292836687,2.4590831132728314e-06,-2.356183218207347,-4.746197021154246e-05,1.5706738321513996,0.7853020685627635,0.46684985250509403,0.6067902204774707,-1.1235025316708025,-1.8981306518175218,-0.4992979566926879,2.4185435628246275,2.751248826956838],[0.4000994488082876,3.1248166649558183e-05,-0.7853727773099727,-9.919554676289215e-06,-2.356173862272213,-5.637149027567018e-05,1.570662088617911,0.7853021560982716,0.47477880520910687,0.6035831554762152,-1.127526765043989,-1.8989723477849483,-0.49935059979514607,2.4133222552063875,2.751269052210025],[0.40031271584359,3.3024320634041644e-05,-0.7853688888371544,-2.133317649394423e-05,-2.356165654151877,-6.389941294340892e-05,1.5706524168785685,0.7853022053487748,0.4816555201351457,0.600812074816706,-1.1310268903256773,-1.8996837813042133,-0.4993945924717285,2.408786808158887,2.751285646036026],[0.4004797654109459,3.4237574057127224e-05,-0.7853662232777161,-3.0070656280616187e-05,-2.356159408386516,-6.925904419641691e-05,1.5706456789642993,0.7853022342717872,0.48656373174774487,0.5988354554738204,-1.1335296935056745,-1.9001867309131246,-0.49942511118019195,2.4055475689526298,2.751297269307352],[0.4006615120604058,3.50770318799012e-05,-0.7853621613044216,-4.1855057414027286e-05,-2.356152382721987,-7.50113665765931e-05,1.570639137290077,0.78530221106691,0.49152928088857195,0.5968214466770304,-1.1360702969475178,-1.9007096530027845,-0.49947140916838234,2.4022541405450473,2.751282139168888],[0.4007927188298156,3.516776937756223e-05,-0.7853574341320144,-5.232966558167038e-05,-2.3561480965589827,-7.936001782352095e-05,1.5706346214374276,0.7853021396709713,0.4949715969459624,0.5953365559585891,-1.1378430304692164,-1.901109716495708,-0.499546499341956,2.39992186325623,2.7511349872509863],[0.40092352323606256,3.497199665462108e-05,-0.7853515129111477,-6.421351435672405e-05,-2.3561446573248843,-8.397275635420552e-05,1.570629975426925,0.7853020166270301,0.49834259227816036,0.5936431680758852,-1.139607946779306,-1.9015813167411033,-0.49970838677293516,2.397526365160964,2.7506458466979793],[0.40101097625814724,3.477969344951911e-05,-0.7853470093251466,-7.251975060952447e-05,-2.3561431052408035,-8.726276236042946e-05,1.5706265765579124,0.7853019031281384,0.5005577229121576,0.5922090266781828,-1.140810220115474,-1.9019859368026688,-0.4999288543937762,2.3958053939673114,2.7498773570687454],[0.40109240582870315,3.455012908191823e-05,-0.7853420434796038,-8.000759595764969e-05,-2.3561427989232477,-9.061997690275241e-05,1.5706229380829986,0.7853017674705189,0.5025347462544545,0.5903432545234997,-1.1419667724272482,-1.902503730666831,-0.5003299119388769,2.3940030925336155,2.74838943921631],[0.40114330867908804,3.454882375506922e-05,-0.7853393726470753,-8.361593205940618e-05,-2.3561428799222015,-9.289389013155304e-05,1.5706201952975503,0.785301670124916,0.5036402622293202,0.5885921119150903,-1.1427231404182403,-1.9029898957567566,-0.5007967109259774,2.3926761832345926,2.746604287212591],[0.4011861604763568,3.4328845231770283e-05,-0.7853374731276285,-8.563248819776255e-05,-2.3561429992708987,-9.50889415411476e-05,1.5706173326311752,0.785301564542763,0.5043566894675037,0.5861971176248392,-1.1434138161210134,-1.9036550932719472,-0.5015295911142684,2.391248095081095,2.7437561043858554],[0.40120864856879895,3.396473003729434e-05,-0.7853365394903794,-8.575120752471155e-05,-2.356143357985565,-9.655468118401975e-05,1.5706152206371193,0.7853014852562097,0.5044676030982145,0.5839081383391538,-1.1438262157278456,-1.9042890679768207,-0.502297341305206,2.3901636585981856,2.740743488750338],[0.4012223427599711,3.342142529409134e-05,-0.785336044822699,-8.440198322823255e-05,-2.3561440400876528,-9.794413823609829e-05,1.5706129637214865,0.7853014013349995,0.5040406290536987,0.5807567084118389,-1.1441450476882429,-1.9051578567000886,-0.5034213035198065,2.3889553545988567,2.73630603042044],[0.40122459876104477,3.293777639131976e-05,-0.7853360809142095,-8.23161939273117e-05,-2.3561447305988543,-9.879199658520879e-05,1.5706112885917471,0.78530134139448,0.5032332707732865,0.5777581219126219,-1.1442772166004072,-1.9059802335249265,-0.5045363435598452,2.3880035222424123,2.73188590860706],[0.40121849453827113,3.2373977464001954e-05,-0.7853365805423858,-7.898853810834511e-05,-2.3561455881348965,-9.93055886658339e-05,1.570609505247426,0.7853012856809028,0.5017400118830099,0.5736769990069449,-1.1442901840319104,-1.907093743935764,-0.5060979456739847,2.3869034619010736,2.7256784059037873],[0.4012076457076321,3.194385216254002e-05,-0.7853372453764906,-7.575251580822453e-05,-2.356146336142214,-9.92234048576605e-05,1.5706081841113904,0.7853012537351812,0.5000690605008625,0.5698478843303698,-1.144188399880787,-1.908133591019576,-0.5075928463882857,2.3860057086813646,2.7197243998043317],[0.4011899603840602,3.1723604952377906e-05,-0.7853372998399943,-7.186776602058982e-05,-2.3561481914497815,-9.891924009072641e-05,1.5706067676974287,0.7853012129170738,0.49755210082840523,0.5646910149457816,-1.1439310719804074,-1.909528263957257,-0.5096377201540612,2.384931143876621,2.7115681285392617],[0.40117526137823006,3.175718971672946e-05,-0.7853366782946631,-6.841055653288846e-05,-2.3561511326746203,-9.913731458464982e-05,1.5706054423405955,0.7853011935787397,0.4949818443059876,0.5598161522679953,-1.1435918804175829,-1.9108430130531802,-0.5115937831310193,2.3840152496012568,2.7037570655720367],[0.40115480116306734,3.1492711571107954e-05,-0.7853397825247994,-6.391820693771744e-05,-2.3561503117600786,-9.80039435539233e-05,1.570604414349127,0.7853012141331256,0.4914047424013368,0.5533850514952225,-1.1431000521277952,-1.9125694429768703,-0.5141860424158481,2.382894793856652,2.693398662062172],[0.40113515211672807,3.121488073054287e-05,-0.7853420437165761,-6.050322604747573e-05,-2.356149518968957,-9.658368898990288e-05,1.5706037513054167,0.7853012241779909,0.48803065182230604,0.5475377297045657,-1.142608331370052,-1.914134580633406,-0.5165545105141052,2.3819365402525907,2.683929335924606],[0.4011095201514211,3.092142489975231e-05,-0.7853441341259044,-5.658298244380145e-05,-2.3561490418835884,-9.472927666075413e-05,1.5706030308955377,0.7853012261473958,0.48351772732429227,0.5399217511180194,-1.141920558527193,-1.9161690152520046,-0.5196513471236229,2.3807477386567277,2.671542970021569],[0.4010871667783847,3.0731813095342976e-05,-0.7853457611865527,-5.3547546207649376e-05,-2.3561489255476973,-9.324359411253943e-05,1.5706024901956706,0.7853012213423275,0.47937448272611644,0.5330662447510347,-1.1412675058843238,-1.9179970309898982,-0.5224471179621102,2.3797195771045576,2.6603568358190275],[0.40105996473230426,3.059546957248763e-05,-0.7853482517963875,-5.015652973174457e-05,-2.3561489720603377,-9.164973863114488e-05,1.5706018956534396,0.7853012138223728,0.4739476422886371,0.5242187102177767,-1.1403912174878454,-1.9203522809335103,-0.5260632734313955,2.3784341551473593,2.6458845902231345],[0.4010374515614544,3.05530796150919e-05,-0.7853507716045904,-4.7565016123815895e-05,-2.3561489604419275,-9.050298169780209e-05,1.5706014596312614,0.785301209054002,0.4690492535195842,0.516322888875488,-1.1395866006027533,-1.9224513943876258,-0.5292957948963959,2.3773156836337956,2.632945097897864],[0.40101104593426307,3.060191013490619e-05,-0.7853539781974418,-4.480740577168481e-05,-2.3561489347714737,-8.94094427504539e-05,1.5706010034422793,0.7853012051495861,0.46272282988647984,0.5062132636371663,-1.1385336430180568,-1.9251361055971508,-0.5334400045193849,2.375912149809108,2.616353569332607],[0.40098984274343685,3.073213161680834e-05,-0.785356551560044,-4.281979934037628e-05,-2.3561489123316672,-8.877566480043004e-05,1.5706006720359353,0.7853012041072622,0.45707798282034584,0.4972532480079831,-1.1375844145322196,-1.9275133466309762,-0.5371167099743667,2.374688116583394,2.601631887017169],[0.4009678293463362,3.1234416620809716e-05,-0.7853581892052962,-4.147966166436557e-05,-2.3561517547954467,-8.973824950477188e-05,1.57060010193952,0.7853011792725983,0.449811116395606,0.48576942100505077,-1.1363305952673917,-1.930560247132019,-0.5418383962861075,2.3731398812425426,2.5827235140588636],[0.40095182961532644,3.1562953527703756e-05,-0.7853611059232238,-3.9839792666289366e-05,-2.3561508075978197,-9.018412105727745e-05,1.5705998074174194,0.7853012125926926,0.44335469051866283,0.4756144723041503,-1.1352259932676294,-1.9332508958624601,-0.5460111380343463,2.3717854302969146,2.5660121224690347],[0.4009325309773895,3.193478720453942e-05,-0.7853630780276473,-3.848460126699414e-05,-2.3561488470663554,-9.027734484956332e-05,1.5705997143682335,0.7853012536743309,0.4351663825789258,0.4627832554360315,-1.1338294621430056,-1.9366475206537632,-0.5512844507430218,2.3700871743421565,2.5448923364132563],[0.4009162460983484,3.226007631147057e-05,-0.7853634058198833,-3.772822206218998e-05,-2.3561477196849334,-9.042782125621967e-05,1.570599649992213,0.7853012797765578,0.4279793214233184,0.4515501323777137,-1.1326006665933397,-1.9396196399295538,-0.5559025180277593,2.368610265202829,2.526395996235632],[0.40090027793188326,3.2757258958365295e-05,-0.785363529862094,-3.7033171886780975e-05,-2.3561467375223035,-9.075728790795018e-05,1.5705995860934896,0.785301303293007,0.42046172589537256,0.43982560718608416,-1.131314676453497,-1.9427245429787587,-0.5607242424236891,2.367081339768859,2.5070845557574892],[0.40089022579369904,3.2739525150546834e-05,-0.7853558296202476,-3.832890124405072e-05,-2.3561564310096355,-9.288912159478636e-05,1.5705986786074815,0.7853013319658005,0.41080309671983734,0.42474273797270695,-1.129569286439593,-1.946719772461582,-0.5669497456587044,2.3651378653699746,2.482146635631276],[0.40088483815154374,3.350803495115925e-05,-0.7853600658795528,-3.722845141616074e-05,-2.356153120875522,-9.322476623798509e-05,1.570598472509296,0.7853014477752063,0.40231449536731945,0.41152840682828656,-1.1280963559754262,-1.950213172496791,-0.5723855964477587,2.3634425163561827,2.4603704468692333],[0.4008739440724805,3.428466804145103e-05,-0.7853649617084348,-3.717070431756189e-05,-2.3561471288238534,-9.346402713870053e-05,1.5705989041713708,0.78530152108218,0.3917068550553952,0.39505460427363165,-1.126284565154393,-1.9545652987618696,-0.5791600157329053,2.3613233748552003,2.4332353260551836],[0.40086042075773887,3.4717871843218665e-05,-0.7853667155990097,-3.7893895812947474e-05,-2.3561437997492285,-9.408728175098769e-05,1.570599234963049,0.7853015390287058,0.38252833280682424,0.38081077658979195,-1.1247162975542866,-1.9583240685417933,-0.5850171253916107,2.3594988805013317,2.4097728887746195],[0.40084095898939986,3.53396028811898e-05,-0.7853678732265401,-3.795779337490767e-05,-2.3561418106713297,-9.503326772892322e-05,1.5705993528035647,0.7853015597032815,0.37110483175976783,0.36309507651461015,-1.1227629078485244,-1.9630040961940955,-0.5923043168056149,2.3572218643296785,2.380583567377907],[0.40082194018973033,3.6139603057500964e-05,-0.7853676997527547,-3.9056108794013586e-05,-2.356140494507921,-9.58050007359995e-05,1.5705995013622407,0.7853015688738245,0.3612411548646918,0.347804462867696,-1.1210688342336688,-1.9670391104714684,-0.5985945363193695,2.355264084009514,2.355386245501684],[0.40079714155046736,3.7172478566705256e-05,-0.7853675384325017,-4.0095084804584106e-05,-2.3561397313921697,-9.657092796277878e-05,1.570599551255638,0.7853015951902057,0.3489893631938797,0.3288159339326913,-1.1189596365009107,-1.9720522967519396,-0.6064069474621758,2.352834665017639,2.32408885063243],[0.4007752923785938,3.808423092598803e-05,-0.785367628284822,-4.083082095973032e-05,-2.3561393263125434,-9.708257712614424e-05,1.5705995340651353,0.7853016287906069,0.3384320047665775,0.31245675740217976,-1.1171394098328185,-1.9763707157675199,-0.6131383488245069,2.350740517092701,2.2971225836260345],[0.4007476935234084,3.915160630057803e-05,-0.7853676539768574,-4.216834474513619e-05,-2.356138945808224,-9.762947418812927e-05,1.57059951041389,0.7853016750550045,0.32534348732161045,0.2921778514725696,-1.1148787526138042,-1.9817172410558286,-0.6214851900857334,2.348149115418686,2.263691796984297],[0.4007241220370613,4.0019248597664566e-05,-0.7853678459288546,-4.296066718388212e-05,-2.3561386964115396,-9.795272083665791e-05,1.5705994611447867,0.7853017266837992,0.3140795118471931,0.2747367641952198,-1.112934712003993,-1.9863305067339996,-0.6286638413506431,2.3459111587937693,2.234932365916423],[0.4006939813624761,4.07602022118901e-05,-0.7853681104676269,-4.453787051339046e-05,-2.3561384233934266,-9.831518793835961e-05,1.57059942980182,0.7853017916397464,0.30014255520975136,0.25314796159999076,-1.110521216015544,-1.9920279172646387,-0.6375480550505964,2.3431531316864773,2.1993373881061724],[0.40066854165746296,4.130466646557849e-05,-0.7853684361797709,-4.580826103927788e-05,-2.3561383012304074,-9.855452482888489e-05,1.5705993638955351,0.7853018542019407,0.28817175520650573,0.23460689501821275,-1.1084476153402656,-1.99691986056539,-0.6451799311983717,2.3407846011289584,2.168765063037934],[0.40063711689158477,4.197961499640937e-05,-0.7853686754953667,-4.7711938474518066e-05,-2.3561378961735024,-9.88096197257549e-05,1.5705993523866781,0.7853019297552296,0.27337921913972996,0.21169630372816245,-1.105881747966987,-2.0029677213849086,-0.6546084661034798,2.3378604827139804,2.130986308553324],[0.4006046418963453,4.2393754624320306e-05,-0.7853687383711151,-4.969108183881318e-05,-2.3561376241494814,-9.902966570205909e-05,1.5705993650075467,0.7853020088694106,0.258117732230176,0.18806102936489616,-1.1032321001511838,-2.0092132157288645,-0.6643362159681835,2.3348350388248957,2.0920080667342926],[0.40057603276081377,4.2711191468213434e-05,-0.7853689370022283,-5.131735983931431e-05,-2.3561370450592127,-9.918594044325274e-05,1.5705994198529933,0.7853020758026902,0.24503968445657054,0.16781313443977983,-1.1009644895229307,-2.014570067656002,-0.6726692555073607,2.332240375688737,2.0586143591088333],[0.4005393851835778,4.258731273989425e-05,-0.7853676279149195,-5.302799476556585e-05,-2.3561379985955604,-9.94615539516175e-05,1.5705995384119404,0.7853021591515982,0.2288916732699194,0.1428160885914367,-1.0981536324307912,-2.02118093900412,-0.6829662887312209,2.3290369867830876,2.0173610793614065],[0.4005102077244278,4.271046108238103e-05,-0.7853658182220836,-5.4605361658008496e-05,-2.356140491435134,-9.977491525023401e-05,1.5705989880836482,0.7853022820125491,0.2149705304879023,0.12124033849186946,-1.0957068231100116,-2.0268836125867664,-0.6918472264813316,2.3262851391658983,1.9817574774225057],[0.4004721526690194,4.354571763859536e-05,-0.7853703900984338,-5.525239229703428e-05,-2.3561364061414314,-9.962508733401205e-05,1.5705992122993777,0.7853023934555096,0.1978249611153975,0.094692283964709,-1.0927393377392294,-2.033886059010605,-0.7027638139486819,2.322892512229286,1.9379848508407533],[0.40043587525840163,4.387966923021083e-05,-0.7853728834396166,-5.547551475514653e-05,-2.356133297385678,-9.956718938230392e-05,1.5705995448105368,0.7853024298089688,0.18318742219499112,0.07203202966857106,-1.0902130035587378,-2.0398615080418243,-0.7120782034524532,2.319996013001923,1.9006269925760046],[0.4003867433419916,4.3604528549315715e-05,-0.7853744706304412,-5.4022454840444495e-05,-2.356130657970069,-9.952916636980613e-05,1.5705998705477955,0.7853024171371393,0.1652050916098118,0.04419411102123799,-1.0871104127790376,-2.04720283245543,-0.7235198808655692,2.3164369889614913,1.8547332746427279],[0.40034130519914607,4.141026135823662e-05,-0.7853766007420064,-5.0543787913902546e-05,-2.356129387949057,-9.808726541274424e-05,1.5706000757485203,0.7853023909720142,0.14987069081215754,0.020454840579391877,-1.084463931273112,-2.0534642184041014,-0.7332812740107494,2.3134013982994412,1.8155948806532032],[0.4002816793614354,3.5659496169803125e-05,-0.7853900731542164,-4.289614367438557e-05,-2.356130927055187,-9.053533335972044e-05,1.5706003917478852,0.7853023700369257,0.1310492109015722,-0.008684047122320572,-1.0812145965882902,-2.0611508275909753,-0.7452745758990534,2.3096747757214886,1.7675524507159714],[0.40022805888985896,2.8229069485967358e-05,-0.7854020235145407,-3.359816719604203e-05,-2.3561434474872938,-7.747670962592405e-05,1.5706025281723628,0.7853022246763567,0.11501009699309751,-0.033516713642316065,-1.0784444927326433,-2.0677022167147383,-0.7555029805375498,2.3064984752453777,1.7266080529374577],[0.40017079488638735,1.845194753593151e-05,-0.7854093371719988,-2.2801556606391956e-05,-2.356158179676707,-5.7264342249123884e-05,1.5706127617501304,0.7853017744928154,0.09862406566639721,-0.05888622831703186,-1.0755974039596963,-2.074401023359451,-0.7659594312701531,2.3032510597510845,1.6847452563784082],[0.4001029953044786,7.13712466116382e-06,-0.7854124864977965,-1.0999528564241774e-05,-2.3561792124256034,-3.148164891594458e-05,1.5706390693981054,0.7853006109588271,0.078301657552207,-0.09038296363266714,-1.0720142065796803,-2.082738395716725,-0.7789449467493824,2.2992215414545423,1.6327300735705605],[0.40004367115887146,8.362150051245505e-07,-0.7854247426554025,-9.925554123927034e-07,-2.356184520277035,-1.2538692557055108e-05,1.57066180479506,0.7852998661958018,0.06092042592163107,-0.11730609395137101,-1.0690055320975826,-2.089844235686661,-0.7900071662284404,2.2957776485279267,1.5883396011602964],[0.3999626244874206,-5.839590854296379e-06,-0.7854373872050485,8.830468712324348e-06,-2.3561871248289266,6.804534265618677e-06,1.5706856807629699,0.785299266923509,0.039664919227089514,-0.15021554595537484,-1.0653556303830458,-2.0985176937496184,-0.803522571345307,2.2915675284339914,1.534102320194791],[0.3998716582415348,-1.176525755758396e-05,-0.7854450839603242,1.704004441593774e-05,-2.3561911001645086,2.2807369798465165e-05,1.570705522952993,0.7852988672757721,0.01798392234228811,-0.18378511067919812,-1.06163472053191,-2.107363931681232,-0.8173133493661632,2.287272692451881,1.4787780949526055],[0.3997895821158948,-1.602937649662679e-05,-0.7854493467415689,2.307985039167313e-05,-2.3561949208132753,3.4050156305031656e-05,1.5707194107581393,0.7852986420773604,-0.0004111641031772713,-0.21227033128887832,-1.0584751202897933,-2.1148714004736116,-0.8290190780510434,2.283628089182346,1.4318300350634499],[0.39968497279383325,-2.0362865243777585e-05,-0.785453120862794,2.958405066783281e-05,-2.3561994469096086,4.547163572557098e-05,1.570733433833277,0.7852984672029651,-0.022884153063871145,-0.24707488571928884,-1.0546111107920497,-2.1240459832453,-0.8433257164735797,2.2791746231242223,1.3744622622936964],[0.3995935740610613,-2.338762048432638e-05,-0.7854556281329579,3.4475753652586144e-05,-2.356202886227317,5.3540486948349663e-05,1.5707432783621065,0.7852983827935671,-0.04194733411533785,-0.2766023266526238,-1.0513305643971818,-2.1318305318369526,-0.8554660067011988,2.275396159069968,1.3257895579035672],[0.3994797656962383,-2.642205836381025e-05,-0.7854580806393378,3.978178048549583e-05,-2.3562065809630126,6.17620711892868e-05,1.570753241862989,0.7852983361291723,-0.0652323760822971,-0.3126738203468875,-1.047320096059518,-2.141341454778842,-0.8702998659152511,2.2707800431198915,1.2663261479981687],[0.3993820683093777,-2.823069719877683e-05,-0.7854602214957592,4.3583623345186285e-05,-2.356208916686285,6.763798199193467e-05,1.5707602522184576,0.7852983373900512,-0.08497501648372022,-0.3432611514401341,-1.0439207078416721,-2.1494053092995067,-0.8828789589587307,2.266865882605698,1.215907191956616],[0.3992623819809906,-2.8268221133320125e-05,-0.7854603473036993,4.4104747333092054e-05,-2.356213687499151,7.262995029353203e-05,1.57076696367723,0.7852982833110769,-0.10915955765032209,-0.38074284522566443,-1.0397323787435728,-2.159298893504493,-0.8983076647480743,2.2620685651330943,1.1540921766795564],[0.3991608326475664,-2.4436651218776046e-05,-0.7854683179500992,4.479512596548544e-05,-2.356209484043773,7.369745117405142e-05,1.5707710999328006,0.7852983700911502,-0.12952984813240132,-0.4122963227186418,-1.0362676540573699,-2.1675913319613436,-0.9112689877338194,2.2580330719891366,1.1021509126563156],[0.3990358412581683,-1.9195056421988363e-05,-0.785474112937201,4.447765980205779e-05,-2.3562047344441246,6.989567286411571e-05,1.5707728767541476,0.7852985764880418,-0.1540553859674973,-0.4502758097082046,-1.0321244655033845,-2.177553389908265,-0.9268616231900277,2.2531766585198767,1.0396704172232862],[0.3989311772466135,-1.4909930460559198e-05,-0.7854713025461871,4.386119783657275e-05,-2.356199979736708,6.364967528936437e-05,1.5707722555006594,0.7852988040364748,-0.17449075020489163,-0.4819199437165681,-1.0286787145376735,-2.1858471702421154,-0.9398508974014603,2.2491307134358416,0.9876256543205214],[0.3988084790296972,-9.827312459436808e-06,-0.7854573552821073,4.308230589803076e-05,-2.3561896522217896,5.383987899660177e-05,1.570769641585697,0.7852991296755921,-0.19893616499913339,-0.5197746945529942,-1.0245571751610811,-2.1957653412427067,-0.9553882850968592,2.244291049395747,0.9253750839189302],[0.39871108025724433,-7.4002126888377395e-06,-0.7854445093968478,4.2674065610763924e-05,-2.356181911032048,4.49183162970353e-05,1.5707647357147687,0.7852994639275268,-0.21922037156681717,-0.5511863050456943,-1.0211201352349841,-2.2040030358251217,-0.9682972442707569,2.2402727139919847,0.8736835119188553],[0.39862000248690466,-6.134759674461067e-06,-0.7854338731818632,4.2436360765511355e-05,-2.3561812065782566,3.8197039864680466e-05,1.5707580302866302,0.7852997699233698,-0.23952234180759002,-0.582643834695611,-1.017648575593857,-2.21227330057308,-0.9812290242133993,2.2362485637957157,0.8218726212128599],[0.3985223013882444,-1.7810515871227931e-06,-0.7854261034044634,4.2833758152902825e-05,-2.3561775275696384,2.9716562580147728e-05,1.5707488426900784,0.7853000699118843,-0.26377847770198043,-0.6202258117060856,-1.0135168005698083,-2.222137026055054,-0.9966609566928936,2.231439281318892,0.7600266637169603],[0.3984527743791573,3.1390208690863103e-06,-0.7854216223326722,4.349758777142532e-05,-2.356170399613066,2.013701165450569e-05,1.5707394893523903,0.7853003214295263,-0.28375101759273696,-0.6511536406723066,-1.0101414132287003,-2.230228485547213,-1.0093512062250547,2.2274816175735213,0.7091767246766659],[0.3983833895615334,6.367926960531711e-06,-0.785409869464715,4.255311970096736e-05,-2.356166741576496,8.734638425529334e-06,1.5707272766760847,0.7853005510837886,-0.30740901147636135,-0.687798172299587,-1.0061161342519775,-2.2398343259201656,-1.0243942312770742,2.222787654694554,0.6488843068452617],[0.3983392829283033,9.105789615116387e-06,-0.785399745770599,4.132456389082016e-05,-2.3561640004698523,-4.2199588599662886e-07,1.570716347144141,0.7853007224490212,-0.32683237704817797,-0.7178819980948307,-1.0028063153737965,-2.2477202668800973,-1.036745442689145,2.2189181072100936,0.5993888358675831],[0.3983025007455196,1.0668299191213508e-05,-0.7853887111709904,3.909498942882233e-05,-2.3561647099211713,-1.0219742250163318e-05,1.5707027463047563,0.785300882416761,-0.34978761323798935,-0.7534377968910777,-0.9988712549818304,-2.257055047526268,-1.0513561019669488,2.214351008118569,0.5408517400901357],[0.39828404517010707,1.1504940142093519e-05,-0.7853804642168644,3.7025472539485066e-05,-2.3561666593500825,-1.5697047436420462e-05,1.570692866033333,0.785300933376185,-0.3687169026685268,-0.7827717114343771,-0.995602672174018,-2.2647753523277356,-1.0634101111115335,2.2105862130042224,0.4925473202593796],[0.3982795826970593,1.3794077726038208e-05,-0.7853735806293841,3.513053974731462e-05,-2.3561652268794493,-2.230921947221327e-05,1.5706816033270434,0.7853009760458954,-0.3910344228985243,-0.8173405557391642,-0.9917631175799791,-2.2738535690107162,-1.0776111235022294,2.20614770774749,0.43564999664072035],[0.39829297748587117,1.525342535983212e-05,-0.7853660502291326,3.251178800656575e-05,-2.356165233289938,-2.8539467337429367e-05,1.5706707583378738,0.7853009894227752,-0.41288916555543936,-0.8511909027612202,-0.9879923066322431,-2.2827480259717947,-1.091519969486732,2.2018040940251122,0.3799254663654469],[0.398316789926839,1.597438961395117e-05,-0.7853599129591565,2.9852310242377888e-05,-2.3561660331286314,-3.303761388383037e-05,1.5706622928210632,0.785300981301675,-0.43074485149681063,-0.8788473365540249,-0.9849011690830548,-2.290021242158954,-1.1028868286736593,2.1982569196699937,0.33438675489504555],[0.3983478078715611,1.4890896869408587e-05,-0.7853549142098645,2.603018053075781e-05,-2.356169495873556,-3.547792839278867e-05,1.5706554361877354,0.7853009181376678,-0.4483911763229225,-0.9061915429298087,-0.9818156125928049,-2.297242084261204,-1.1141401630784287,2.1947561334005785,0.28930612837408154],[0.39838293793152385,1.2917148616151004e-05,-0.7853524679174094,2.1824282127805923e-05,-2.3561750666281864,-3.540080749427061e-05,1.570651015673738,0.7853007894522419,-0.46594547451180973,-0.9334042802892982,-0.9787219914842162,-2.3044532098759425,-1.1253564492720978,2.1912684692689,0.24439389109357806],[0.3984297977600702,1.449571275546677e-05,-0.7853527590180277,2.0546215418574478e-05,-2.3561726069344537,-3.63467158495018e-05,1.5706471574574272,0.7853007257527067,-0.4831711857216389,-0.9600811730135117,-0.9757282818201568,-2.311471413449993,-1.1363199260758259,2.187850943587922,0.20047278728301665],[0.3984951949825888,1.4437320593252741e-05,-0.785350133001224,1.7361141342787933e-05,-2.3561727621763753,-3.7593808059550185e-05,1.570642952674364,0.7853006469707854,-0.5034724571030055,-0.9915258635686331,-0.9721808177017858,-2.319763424919709,-1.1492543092975465,2.1838262715402714,0.1486588661432835],[0.39856003754814096,1.5220283631838365e-05,-0.7853479499415725,1.5289451820123967e-05,-2.3561717822238606,-3.944138731742951e-05,1.5706388449706716,0.7853006327509835,-0.5199762727898731,-1.0170773470142478,-0.9693075329419275,-2.3264847305580996,-1.1597563274200329,2.1805544304416373,0.10658753729605377],[0.3986477249772279,1.5499523853211035e-05,-0.7853439859407265,1.1944637808273035e-05,-2.356171642411456,-4.195333790841499e-05,1.5706334758483034,0.7853006329318427,-0.5392685215429363,-1.0469444591585537,-0.9659410381837048,-2.334347498579195,-1.1720351992775062,2.1767304673156835,0.05739842160504887],[0.39872720362797515,1.5357268578397616e-05,-0.7853406058976298,8.649550893115401e-06,-2.3561718868341197,-4.382422994394964e-05,1.5706289748793851,0.7853006338803273,-0.5549241166347998,-1.0711816783479842,-0.9632016467762704,-2.3407352907296985,-1.1820025670212053,2.1736276527768985,0.01746963257164398],[0.3988280436609313,1.4910401532867727e-05,-0.7853372235068109,4.405865061805356e-06,-2.3561720710769904,-4.552726203145617e-05,1.5706239599928793,0.7853006230143856,-0.5732175260279718,-1.099503204242724,-0.9599925228860914,-2.348208050408805,-1.1936529958606221,2.1700022520498092,-0.029201036171284472],[0.39891519815528603,1.4429331691314069e-05,-0.7853351692429135,8.504234585834756e-07,-2.3561719608094305,-4.647831421200247e-05,1.5706203811550092,0.7853005982390471,-0.5880571745773495,-1.1224777255291125,-0.9573840535535472,-2.354275611184824,-1.2031059554176007,2.1670616165314676,-0.06706852800665078],[0.39902180279398963,1.3726788344560351e-05,-0.7853334702446464,-3.353323588300526e-06,-2.356171479605424,-4.707642678744696e-05,1.570616766842044,0.7853005580624522,-0.6053877392279968,-1.1493089948491084,-0.954332156919051,-2.3613682706268846,-1.2141484874556838,2.1636274718995887,-0.11130342117325809],[0.3991291213867609,1.3006273581391594e-05,-0.7853325678485116,-7.296183148912284e-06,-2.3561706998809924,-4.7183911882237646e-05,1.570613820170088,0.7853005141999795,-0.6222047831668474,-1.1753449315277256,-0.9513666807697548,-2.368255649958072,-1.2248652560121978,2.1602954792214857,-0.1542331481864669],[0.3991945556269068,1.0406692381572665e-05,-0.7853339528069351,-1.2305635272818244e-05,-2.3561737720239857,-4.6126381771182306e-05,1.570613991383579,0.7853003914298081,-0.6332739241494294,-1.1925057329817326,-0.9493849957604867,-2.3728434716391,-1.2319618033732824,2.158098367334998,-0.18263791270943833],[0.3992731233136944,9.635248589556261e-06,-0.7853358566590157,-1.5068653115108606e-05,-2.3561726177485003,-4.3896047037644675e-05,1.5706159124366474,0.7853002712585254,-0.6469332226630746,-1.2136640726715728,-0.9469647642970171,-2.3784632451523007,-1.2406774749057272,2.155394519961176,-0.21754940326208896],[0.39936819572604076,9.969529435401951e-06,-0.7853384468543171,-1.5796848048585046e-05,-2.356170118666374,-4.208356455785229e-05,1.5706170341260324,0.785300239387989,-0.6628966235978605,-1.2383743214031566,-0.9441526668011805,-2.3849962893837335,-1.2508425752343089,2.152233315876464,-0.2582728560059988],[0.39944945929299164,1.0159199993027465e-05,-0.7853390057811971,-1.6418800972876838e-05,-2.3561685689106646,-4.155044122150317e-05,1.5706165642078358,0.7853002646271255,-0.6757633382071154,-1.2582856808087686,-0.9418887563836178,-2.3902532494561983,-1.2590327541367214,2.149686937618267,-0.2910830134356415],[0.39954729511487685,9.976738594997362e-06,-0.7853382971431806,-1.7925638000875118e-05,-2.356167463265925,-4.139943943043279e-05,1.5706149499746893,0.7853003075565778,-0.6906839719172434,-1.2813760594348174,-0.9392600585591979,-2.396354892269618,-1.2685329897614117,2.14673369939732,-0.3291412317024143],[0.3996275928433188,9.63917776019438e-06,-0.785337596520798,-1.951265033998593e-05,-2.3561666438771387,-4.1323852445443305e-05,1.5706131674015034,0.785300337968468,-0.702695122884375,-1.2999650247774763,-0.9371409448447015,-2.4012722953188392,-1.276183154719861,2.1443559632555385,-0.3597879978870737],[0.3997200523544943,8.790355575575678e-06,-0.7853369144281742,-2.200129267786455e-05,-2.3561653737576163,-4.094087292868576e-05,1.5706113101035537,0.7853003416863811,-0.7166342294961734,-1.3215444181007643,-0.9346740254769972,-2.406995329709755,-1.285072393780387,2.1415985384173033,-0.3953931806463682],[0.3997922652251516,8.278806192192888e-06,-0.7853371322226664,-2.365514966761767e-05,-2.356164420395924,-4.023186470334989e-05,1.570610113676248,0.7853003291703176,-0.7279014596940102,-1.3389868297584,-0.9326809913042623,-2.411622741685203,-1.2922537464651802,2.1393659982835582,-0.42416334925977556],[0.3998756645932058,7.992592258430398e-06,-0.7853380770340301,-2.4720778685890423e-05,-2.3561628911482244,-3.9478753122923526e-05,1.57060842877568,0.785300326258095,-0.7409324248705283,-1.3591557819042872,-0.9303780360935646,-2.4169665594537584,-1.3005565190204604,2.136785952447777,-0.4574246954435921],[0.3999419284502991,7.689846755239282e-06,-0.7853386207597381,-2.5585000591966058e-05,-2.3561617424982777,-3.8899454632923086e-05,1.57060715195084,0.7853003139719045,-0.7513848140010789,-1.3753341435800275,-0.9285299996833924,-2.4212552824657934,-1.3072173957616406,2.1347162626159353,-0.48410849892647373],[0.4000142840566325,6.919589052001576e-06,-0.7853392024452115,-2.7137149664914906e-05,-2.3561602214571087,-3.779026296952815e-05,1.5706066250681565,0.7853002686039926,-0.7635181662064086,-1.3941224127541196,-0.9263790772908359,-2.4262516762538846,-1.314959819064789,2.1323129475860996,-0.5151209865404996],[0.40007114963357343,6.731055182773201e-06,-0.7853402880573129,-2.7396058790446795e-05,-2.35615910907166,-3.6942524991911156e-05,1.5706058120748354,0.7853002587762745,-0.7732352188979644,-1.4091633266181618,-0.9246607821155104,-2.43024088470884,-1.321152457720629,2.1303889270591285,-0.539929366837001],[0.4001352731726788,6.465340245014285e-06,-0.7853412479867599,-2.762052596181356e-05,-2.3561578996154005,-3.6031150849930706e-05,1.5706047665940877,0.7853002511490769,-0.7844136218102717,-1.4264665592649062,-0.9226837639124632,-2.434831562896966,-1.3282772703854786,2.128175333617034,-0.568472099820268],[0.40018492348044016,6.20353501907394e-06,-0.7853419212534237,-2.779977509221028e-05,-2.3561569663767816,-3.5290620576707456e-05,1.5706040219447772,0.7853002414888937,-0.7933320211666188,-1.4402723767677328,-0.921105890995228,-2.438496530051117,-1.3339627035158543,2.1264090298144245,-0.5912485348181153],[0.4002396870695258,5.879467689607465e-06,-0.78534276355573,-2.7918811758589397e-05,-2.356155856673844,-3.436666744780292e-05,1.570603272619994,0.785300229888861,-0.8035639107627518,-1.4561125610407486,-0.9192950911571273,-2.4427038732935187,-1.340486673435381,2.1243823572873493,-0.6173842321953656],[0.4002890622662462,5.5632357305122865e-06,-0.7853436794648041,-2.788893318045221e-05,-2.35615475274232,-3.3386436424092254e-05,1.5706026556615404,0.7853002200517184,-0.8132894704316821,-1.4711699902631301,-0.9175735092457519,-2.446705569042991,-1.3466889027773221,2.122455718118774,-0.6422310262213039],[0.4003261298686027,5.317941134115742e-06,-0.7853445171099144,-2.7722385474696362e-05,-2.3561538615601343,-3.2533681802432995e-05,1.5706022745449535,0.7853002142527052,-0.8210109623558273,-1.4831253686302757,-0.9162065280111841,-2.449884164682676,-1.3516137495209601,2.120925951553605,-0.6619604927098575],[0.40036584846547285,5.047675224604256e-06,-0.785345918674232,-2.7360739470157964e-05,-2.3561528816447233,-3.1488611493441875e-05,1.570601859102097,0.7853002100980743,-0.8298209970491359,-1.4967669550878517,-0.9146467557240608,-2.4535124569761453,-1.3572335424666808,2.1191803633190607,-0.6844740035994962],[0.4003953928789556,4.8794507633435784e-06,-0.7853475653874971,-2.6841774308782778e-05,-2.356152165520678,-3.0651916194051285e-05,1.5706017500889613,0.7853002006568144,-0.8367780889712155,-1.5075393337301057,-0.9134152335941813,-2.456377031189642,-1.3616711717435885,2.11780222720119,-0.7022515287921871],[0.40042613585446035,4.612655159963666e-06,-0.7853502227149939,-2.6310890919552535e-05,-2.3561513044454667,-2.9596817412819675e-05,1.5706019140955862,0.7853001894347428,-0.8446854483413013,-1.5197852025506753,-0.9120150119465222,-2.4596378058843986,-1.366716915568126,2.116234807471013,-0.7224654937759005],[0.4004483390937653,4.450186934021061e-06,-0.7853530798759758,-2.565045086429785e-05,-2.3561506590486174,-2.8712569736841532e-05,1.570601939951065,0.7853001912442733,-0.850902675978581,-1.5294135318818853,-0.9109143168586205,-2.462200942819646,-1.370683847427242,2.115002732106255,-0.7383574926602842],[0.4004712509032208,4.282024315151173e-06,-0.7853570258358619,-2.474103139124318e-05,-2.3561499602287195,-2.767430817383867e-05,1.5706019120921355,0.7853001975198942,-0.8579172446758632,-1.540277017162231,-0.909672568880526,-2.4650933824266854,-1.3751596819289489,2.113612616103455,-0.7562882174594902],[0.40048745433940713,4.15427599019732e-06,-0.7853606662360527,-2.3921996158968384e-05,-2.356149421113406,-2.68315942174225e-05,1.5706018796001104,0.7853002030227039,-0.8633924814461594,-1.5487569896210962,-0.9087032783044279,-2.4673518872400853,-1.3786536888503804,2.112527461524639,-0.7702856586049712],[0.40050373826428604,4.0233332820606386e-06,-0.785365382954993,-2.287080422256508e-05,-2.35614885335488,-2.585540941019145e-05,1.5706018329732396,0.7853002093249771,-0.869519655206462,-1.5582468981775666,-0.9076186497459883,-2.469879768645852,-1.3825636855588748,2.1113131258912916,-0.7859496080363465],[0.40051490776369475,3.9259891073184045e-06,-0.7853695372203474,-2.1959359985889352e-05,-2.356148412491281,-2.507081844957239e-05,1.5706018095388707,0.7853002136591248,-0.8742571901794493,-1.565584868226395,-0.9067799276939188,-2.4718350563015314,-1.3855872049946172,2.110374117766814,-0.7980622524235627],[0.4005257134916225,3.8254690517808506e-06,-0.7853747297892979,-2.083204376363759e-05,-2.3561479378951597,-2.4167464488924585e-05,1.5706017973203734,0.7853002182007545,-0.8795011974672053,-1.5737075917770382,-0.9058514621625751,-2.4739999977797327,-1.3889340927494298,2.1093347164689837,-0.811470385579546],[0.40053277082462063,3.7529542180216684e-06,-0.7853791746640377,-1.987832607306057e-05,-2.3561475753725714,-2.344711578674696e-05,1.5706018064348302,0.7853002214739435,-0.8835043923132186,-1.5799086103627513,-0.9051425612720959,-2.4756533176606608,-1.3914892338068043,2.108541209204276,-0.8217066956595617],[0.4005388181241595,3.641477872009366e-06,-0.7853844966950836,-1.8822017025006273e-05,-2.356147064785581,-2.2588465491177608e-05,1.5706020091924493,0.7853002196750564,-0.8878795589985592,-1.5866872563543764,-0.9043672173404118,-2.4774634245909644,-1.3942834596334879,2.1076733081256505,-0.8329010048763423],[0.40054240908136346,3.611365389653938e-06,-0.7853890967696515,-1.7794564445452454e-05,-2.3561468347789827,-2.1927030150066297e-05,1.5706020686114415,0.7853002245071208,-0.8911600753207154,-1.5917687848055526,-0.9037861604766092,-2.478818451889775,-1.396376897678467,2.107023314204989,-0.8412876583295715]]}
diff --git a/src/dual_arm_sim/test/test_block_surface.cpp b/src/dual_arm_sim/test/test_block_surface.cpp
new file mode 100644
index 000000000..8805c9b15
--- /dev/null
+++ b/src/dual_arm_sim/test/test_block_surface.cpp
@@ -0,0 +1,292 @@
+// Copyright 2026 PickNik Inc.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//
+// * Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+//
+// * Neither the name of the PickNik Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+namespace
+{
+using sensor_msgs::msg::PointCloud2;
+
+class BlockSurface : public ::testing::Test
+{
+public:
+ static void SetUpTestSuite()
+ {
+ rclcpp::init(0, nullptr);
+ }
+
+ static void TearDownTestSuite()
+ {
+ rclcpp::shutdown();
+ }
+
+ BlockSurface()
+ {
+ context_ = std::make_shared(
+ std::make_shared("block_surface_test"), false);
+ for (const auto* name : { "CoreBehaviorsLoader", "VisionBehaviorsLoader" })
+ {
+ plugins_.push_back(loader_.createSharedInstance(std::string("moveit_pro::behaviors::") + name));
+ plugins_.back()->registerBehaviors(factory_, context_);
+ }
+ // Only inference and marker publication are substituted. Selection, filtering and centroid use shipped nodes.
+ factory_.registerSimpleAction("CapturedSegmentation",
+ [this](BT::TreeNode& node) {
+ if (segmentation_failed)
+ {
+ return BT::NodeStatus::FAILURE;
+ }
+ node.setOutput("point_cloud_vector", clouds);
+ return BT::NodeStatus::SUCCESS;
+ },
+ { BT::OutputPort>("point_cloud_vector") });
+ std::ignore = factory_.unregisterBuilder("VisualizePose");
+ factory_.registerSimpleAction("VisualizePose",
+ [this](BT::TreeNode& node) {
+ visualized = node.getInput("pose").value();
+ ++visualizations;
+ return BT::NodeStatus::SUCCESS;
+ },
+ { BT::InputPort("pose"),
+ BT::InputPort("marker_lifetime"), BT::InputPort("marker_name"),
+ BT::InputPort("marker_size") });
+ }
+
+ [[nodiscard]] BT::Tree makeTree(const std::string& tree_id = "Find with prompt")
+ {
+ tinyxml2::XMLDocument source;
+ if (source.LoadFile(FIND_WITH_PROMPT_XML) != tinyxml2::XML_SUCCESS)
+ {
+ throw std::runtime_error("Cannot load Find with prompt Objective XML");
+ }
+ auto* segmentation = source.RootElement()
+ ->FirstChildElement("BehaviorTree")
+ ->FirstChildElement("Control")
+ ->FirstChildElement("SubTree");
+ if (!segmentation || std::string(segmentation->Attribute("ID")) != "Segment Point Cloud from Text Prompt Subtree")
+ {
+ throw std::runtime_error("Find with prompt has no segmentation boundary");
+ }
+ while (segmentation->FirstAttribute())
+ {
+ segmentation->DeleteAttribute(segmentation->FirstAttribute()->Name());
+ }
+ segmentation->SetName("Action");
+ segmentation->SetAttribute("ID", "CapturedSegmentation");
+ segmentation->SetAttribute("point_cloud_vector", "{point_cloud_vector}");
+ tinyxml2::XMLPrinter printer;
+ source.Print(&printer);
+ factory_.clearRegisteredBehaviorTrees();
+ factory_.registerBehaviorTreeFromText(printer.CStr());
+ const std::filesystem::path objectives = std::filesystem::path(FIND_WITH_PROMPT_XML).parent_path();
+ factory_.registerBehaviorTreeFromFile((objectives / "find_red_block.xml").string());
+ factory_.registerBehaviorTreeFromFile((objectives / "find_green_block.xml").string());
+ return factory_.createTree(tree_id);
+ }
+
+ [[nodiscard]] static PointCloud2 capturedCloud(const std::string& filename)
+ {
+ pcl::PointCloud points;
+ const std::filesystem::path path = std::filesystem::path(BLOCK_CLOUD_DATA) / filename;
+ if (pcl::io::loadPCDFile(path.string(), points) != 0)
+ {
+ throw std::runtime_error("Cannot load captured block cloud: " + path.string());
+ }
+ PointCloud2 cloud;
+ pcl::toROSMsg(points, cloud);
+ // SendPointCloudToUI captures are already transformed to the world frame.
+ cloud.header.frame_id = "world";
+ cloud.header.stamp.sec = 42;
+ cloud.header.stamp.nanosec = 123;
+ return cloud;
+ }
+
+ [[nodiscard]] static BT::NodeStatus finish(BT::Tree& tree)
+ {
+ const auto deadline = std::chrono::steady_clock::now() + std::chrono::seconds(5);
+ while (std::chrono::steady_clock::now() < deadline)
+ {
+ const BT::NodeStatus status = tree.tickExactlyOnce();
+ if (status != BT::NodeStatus::RUNNING)
+ {
+ return status;
+ }
+ tree.sleep(std::chrono::milliseconds(1));
+ }
+ tree.haltTree();
+ return BT::NodeStatus::RUNNING;
+ }
+
+ std::vector clouds;
+ bool segmentation_failed = false;
+ geometry_msgs::msg::PoseStamped visualized;
+ int visualizations = 0;
+
+private:
+ std::shared_ptr context_;
+ pluginlib::ClassLoader loader_{
+ "moveit_pro_behavior_interface", "moveit_pro::behaviors::SharedResourcesNodeLoaderBase"
+ };
+ std::vector> plugins_;
+ BT::BehaviorTreeFactory factory_;
+};
+
+TEST_F(BlockSurface, EmptyDetectionsFailWithoutPublishingAPose)
+{
+ // GIVEN successful segmentation with no objects.
+ auto tree = makeTree();
+ // WHEN the production Find subtree runs.
+ EXPECT_EQ(finish(tree), BT::NodeStatus::FAILURE);
+ // THEN callers can distinguish exhaustion from a perception error, without a pose.
+ EXPECT_EQ(visualizations, 0);
+ bool detections_empty = false;
+ EXPECT_TRUE(tree.rootBlackboard()->get("detections_empty", detections_empty));
+ EXPECT_TRUE(detections_empty);
+}
+
+TEST_F(BlockSurface, InsufficientSurfaceFailsWithoutPublishingAPose)
+{
+ // GIVEN an object mask containing only two finite depth points.
+ PointCloud2 cloud = capturedCloud("red3_after_drop.pcd");
+ cloud.width = 2;
+ cloud.height = 1;
+ cloud.row_step = 2 * cloud.point_step;
+ cloud.data.resize(cloud.row_step);
+ clouds.emplace_back(cloud);
+ auto tree = makeTree();
+ // WHEN the production Find subtree runs.
+ EXPECT_EQ(finish(tree), BT::NodeStatus::FAILURE);
+ // THEN a centroid without a measurable surface must not be used for motion or mistaken for exhaustion.
+ EXPECT_EQ(visualizations, 0);
+ bool detections_empty = true;
+ EXPECT_TRUE(tree.rootBlackboard()->get("detections_empty", detections_empty));
+ EXPECT_FALSE(detections_empty);
+}
+
+TEST_F(BlockSurface, RegressionAmbiguousDroppedBlockIsNotReportedAsExhaustion)
+{
+ // GIVEN the observed mask of a dropped block whose largest surface covers only 55% of the cloud.
+ clouds = { BT::Any(capturedCloud("red3_on_floor.pcd")) };
+ auto tree = makeTree();
+
+ // WHEN the real surface estimator rejects that ambiguous mask.
+ EXPECT_EQ(finish(tree), BT::NodeStatus::FAILURE);
+
+ // THEN Sort Blocks must see an error, not an empty table or a usable pose.
+ EXPECT_FALSE(tree.rootBlackboard()->get("detections_empty"));
+ EXPECT_EQ(visualizations, 0);
+}
+
+TEST_F(BlockSurface, RegressionFindWrappersClearExhaustionAndDoNotPublishStalePoses)
+{
+ for (const auto* tree_id : { "Find Red Block", "Find Green Block" })
+ {
+ // GIVEN either real color wrapper after a valid detection.
+ SCOPED_TRACE(tree_id);
+ clouds = { BT::Any(capturedCloud("red3_before_pick.pcd")) };
+ auto tree = makeTree(tree_id);
+ ASSERT_EQ(finish(tree), BT::NodeStatus::SUCCESS);
+ const int previous_visualizations = visualizations;
+
+ // WHEN subsequent segmentation is empty, then fails.
+ clouds.clear();
+ EXPECT_EQ(finish(tree), BT::NodeStatus::FAILURE);
+ EXPECT_TRUE(tree.rootBlackboard()->get("detections_empty"));
+ segmentation_failed = true;
+ EXPECT_EQ(finish(tree), BT::NodeStatus::FAILURE);
+
+ // THEN the wrapper preserves the error/empty distinction and never republishes the old pose.
+ EXPECT_FALSE(tree.rootBlackboard()->get("detections_empty"));
+ EXPECT_EQ(visualizations, previous_visualizations);
+ segmentation_failed = false;
+ }
+}
+
+TEST_F(BlockSurface, RegressionSegmentationFailureAfterEmptyDetectionsIsNotExhaustion)
+{
+ // GIVEN a tree whose previous successful segmentation was empty.
+ auto tree = makeTree();
+ ASSERT_EQ(finish(tree), BT::NodeStatus::FAILURE);
+ segmentation_failed = true;
+
+ // WHEN inference or cloud acquisition fails on the next attempt.
+ EXPECT_EQ(finish(tree), BT::NodeStatus::FAILURE);
+
+ // THEN the previous exhaustion result is cleared and no pose is published.
+ bool detections_empty = true;
+ EXPECT_TRUE(tree.rootBlackboard()->get("detections_empty", detections_empty));
+ EXPECT_FALSE(detections_empty);
+ EXPECT_EQ(visualizations, 0);
+}
+
+TEST_F(BlockSurface, RegressionSurfaceStaysOnTheSameBlockBeforeAndAfterADrop)
+{
+ // GIVEN paired masks of one block before picking and after it lands on another face near the table edge.
+ for (const auto* filename : { "red3_before_pick.pcd", "red3_after_drop.pcd" })
+ {
+ SCOPED_TRACE(filename);
+ const PointCloud2 cloud = capturedCloud(filename);
+ clouds = { BT::Any(cloud) };
+ auto tree = makeTree();
+ // WHEN real selection, plane extraction and centroid run in the shipped Objective.
+ ASSERT_EQ(finish(tree), BT::NodeStatus::SUCCESS);
+ const auto pose = tree.rootBlackboard()->get("object_centroid");
+ // THEN the point lies on the measured top, not the lower sides/table/floor caught by the mask.
+ // The independently measured MuJoCo top stays at this world height after the face change.
+ EXPECT_NEAR(pose.pose.position.z, 0.804362824, 0.001);
+ const bool before_pick = std::string(filename) == "red3_before_pick.pcd";
+ EXPECT_NEAR(pose.pose.position.x, before_pick ? 0.850000006 : 0.733832575, 0.001);
+ EXPECT_NEAR(pose.pose.position.y, before_pick ? -0.250000002 : -0.257507979, 0.001);
+ EXPECT_EQ(pose.header, cloud.header);
+ EXPECT_EQ(visualized, pose);
+ bool detections_empty = true;
+ EXPECT_TRUE(tree.rootBlackboard()->get("detections_empty", detections_empty));
+ EXPECT_FALSE(detections_empty);
+ }
+}
+} // namespace
diff --git a/src/dual_arm_sim/test/test_block_transfer.py b/src/dual_arm_sim/test/test_block_transfer.py
new file mode 100644
index 000000000..c6fbc6fef
--- /dev/null
+++ b/src/dual_arm_sim/test/test_block_transfer.py
@@ -0,0 +1,196 @@
+# Copyright 2026 PickNik Inc.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# * Neither the name of the PickNik Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+
+"""Plan the shipped transfer tree and check complete carried-block clearance offline."""
+
+import copy
+import json
+import os
+from pathlib import Path
+import subprocess
+
+from ament_index_python.packages import get_package_prefix, get_package_share_directory
+import mujoco
+import numpy as np
+import pytest
+import yaml
+
+from moveit_studio_utils_py.create_urdf import create_xml_from_xacro
+from moveit_studio_utils_py.system_config import load_system_config
+
+PACKAGE = Path(get_package_share_directory("dual_arm_sim"))
+STATES = json.loads(
+ (Path(__file__).parent / "data/block_transfer_states.json").read_text()
+)
+# Bounds all cube rotations plus the observed within-grip displacement, not just the TCP.
+GRIP_DRIFT_ALLOWANCE_M = 0.025
+
+
+@pytest.fixture(scope="module")
+def transfer_plans(tmp_path_factory):
+ """Use current config/model sources and real planners without any live ROS service."""
+ directory = tmp_path_factory.mktemp("block_transfer")
+ mujoco.mj_loadAllPluginLibraries(
+ str(Path(get_package_prefix("mujoco_package_uri")) / "bin/mujoco_plugin")
+ )
+ model = mujoco.MjModel.from_xml_path(str(PACKAGE / "description/mujoco/scene.xml"))
+ waypoints = {
+ waypoint["name"]: dict(
+ zip(waypoint["joint_state"]["name"], waypoint["joint_state"]["position"])
+ )
+ for waypoint in yaml.safe_load(
+ (PACKAGE / "waypoints/waypoints.yaml").read_text()
+ )
+ }
+ cases = copy.deepcopy(STATES)
+ for case in cases:
+ assert len(case["qpos"]) == model.nq
+ case["joints"] = {
+ model.joint(joint).name: case["qpos"][model.jnt_qposadr[joint]]
+ for joint in range(model.njnt)
+ if int(model.jnt_type[joint])
+ in (int(mujoco.mjtJoint.mjJNT_HINGE), int(mujoco.mjtJoint.mjJNT_SLIDE))
+ }
+ case["waypoint"] = waypoints[
+ "Place Right" if case["arm"] == "right" else "Place Left"
+ ]
+ unreachable = copy.deepcopy(cases[0])
+ unreachable["name"] = "unreachable"
+ unreachable["approach"]["xyz"][0] = 2.5
+ cases.append(unreachable)
+ config, _, _ = load_system_config("dual_arm_sim", Path(os.environ["USER_WS"]))
+ description = config.hardware.robot_description
+ params = {
+ "robot_description": create_xml_from_xacro(
+ description.urdf, description.urdf_params
+ ),
+ "robot_description_semantic": create_xml_from_xacro(
+ description.srdf, description.urdf_params
+ ),
+ **config.moveit["robot_description_kinematics"],
+ **config.moveit["robot_description_planning"],
+ }
+ params_path = directory / "params.yaml"
+ params_path.write_text(yaml.safe_dump({"/**": {"ros__parameters": params}}))
+ cases_path = directory / "cases.json"
+ cases_path.write_text(json.dumps(cases))
+ result_path = directory / "results.json"
+ process = subprocess.run(
+ [
+ os.environ["BLOCK_TRANSFER_PROBE"],
+ str(cases_path),
+ str(PACKAGE / "objectives/plan_block_transfer.xml"),
+ str(result_path),
+ "--ros-args",
+ "--params-file",
+ str(params_path),
+ "--log-level",
+ "error",
+ ],
+ capture_output=True,
+ text=True,
+ timeout=180,
+ check=False,
+ )
+ assert process.returncode == 0, process.stdout + process.stderr
+ return model, {row["name"]: row for row in json.loads(result_path.read_text())}
+
+
+def test_unreachable_transfer_returns_no_executable_solution(transfer_plans) -> None:
+ """Planning failure cannot leave a pickup or carry solution for execution."""
+ _, plans = transfer_plans
+ assert plans["unreachable"]["status"] == "FAILURE"
+ assert "pickup" not in plans["unreachable"]
+ assert "carry" not in plans["unreachable"]
+ assert plans["unreachable"]["error"]
+
+
+@pytest.mark.parametrize("case", STATES, ids=lambda case: case["name"])
+def test_regression_complete_transfer_clears_blocks_and_splits_at_grasp(
+ transfer_plans, case
+) -> None:
+ """Recorded near/far/cross-table pickups must plan, close at the block, and carry clear."""
+ model, plans = transfer_plans
+ plan = plans[case["name"]]
+ assert plan["status"] == "SUCCESS", plan.get("error", plan)
+ data = mujoco.MjData(model)
+ data.qpos[:] = case["qpos"]
+ mujoco.mj_forward(model, data)
+ tcp = model.body(case["arm"] + "_fr3v2_hand_tcp").id
+ block = model.body(case["block"]).id
+ geom = int(model.body_geomadr[block])
+ initial_center = data.geom_xpos[geom].copy()
+ radius = np.linalg.norm(model.geom_size[geom]) + GRIP_DRIFT_ALLOWANCE_M
+ obstacles = []
+ for index in range(model.ngeom):
+ name = model.body(int(model.geom_bodyid[index])).name
+ if name == case["block"] or not name.startswith(("table_", "block_")):
+ continue
+ assert int(model.geom_type[index]) == int(mujoco.mjtGeom.mjGEOM_BOX)
+ obstacles.append(
+ (
+ name,
+ data.geom_xpos[index].copy(),
+ data.geom_xmat[index].reshape(3, 3).copy(),
+ model.geom_size[index].copy(),
+ )
+ )
+
+ def at_point(stage, point):
+ for name, value in zip(stage["joints"], point["q"]):
+ data.qpos[model.joint(name).qposadr[0]] = value
+ mujoco.mj_kinematics(model, data)
+
+ pickup = [stage for stage in plan["pickup"] if stage["points"]]
+ carry = [stage for stage in plan["carry"] if stage["points"]]
+ assert len(pickup) == 2, "Pickup must end after descent, before lift."
+ assert len(carry) == 3, "Carry must lift, clear the source, then reach release."
+ assert pickup[-1]["joints"] == carry[0]["joints"]
+ np.testing.assert_allclose(
+ pickup[-1]["points"][-1]["q"], carry[0]["points"][0]["q"], atol=1e-6
+ )
+ at_point(pickup[-1], pickup[-1]["points"][-1])
+ expected_grasp = np.array(case["approach"]["xyz"]) - [0, 0, 0.1]
+ np.testing.assert_allclose(data.xpos[tcp], expected_grasp, atol=0.001)
+ relative = data.xmat[tcp].reshape(3, 3).T @ (initial_center - data.xpos[tcp])
+ at_point(carry[0], carry[0]["points"][-1])
+ np.testing.assert_allclose(data.xpos[tcp], case["approach"]["xyz"], atol=0.001)
+ minimum_clearance = float("inf")
+ # Initial lift starts in intentional support contact; the full envelope applies after lift.
+ for stage in carry[1:]:
+ for point in stage["points"]:
+ at_point(stage, point)
+ center = data.xpos[tcp] + data.xmat[tcp].reshape(3, 3) @ relative
+ for name, position, rotation, half_size in obstacles:
+ outside = np.maximum(
+ np.abs(rotation.T @ (center - position)) - half_size, 0
+ )
+ clearance = float(np.linalg.norm(outside) - radius)
+ minimum_clearance = min(minimum_clearance, clearance)
+ assert (
+ clearance > 0
+ ), f"{case['name']} carried envelope intersects {name}: {clearance:.6f}m"
+ assert np.isfinite(minimum_clearance)
diff --git a/src/dual_arm_sim/test/test_grasp_contacts.py b/src/dual_arm_sim/test/test_grasp_contacts.py
new file mode 100644
index 000000000..e8f334d00
--- /dev/null
+++ b/src/dual_arm_sim/test/test_grasp_contacts.py
@@ -0,0 +1,194 @@
+# Copyright 2026 PickNik Inc.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# * Neither the name of the PickNik Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+
+"""Exercise the installed scene's real actuators and contacts without ROS motion."""
+
+import json
+from pathlib import Path
+
+from ament_index_python.packages import get_package_prefix, get_package_share_directory
+import mujoco
+import numpy as np
+import pytest
+
+
+@pytest.mark.parametrize(
+ "side,block_name,arm_positions",
+ [
+ (
+ "right",
+ "block_red_3",
+ [
+ 0.22728149,
+ 0.73151791,
+ -1.00153045,
+ -1.84700153,
+ -0.48244381,
+ 2.57497201,
+ 2.74926899,
+ ],
+ ),
+ (
+ "left",
+ "block_green_2",
+ [
+ 0.08046400,
+ 1.42594702,
+ 0.02776247,
+ -1.08445314,
+ 1.02392209,
+ 2.03964838,
+ 1.17891876,
+ ],
+ ),
+ ],
+)
+def test_regression_block_stays_in_hand_through_lift_and_carry(
+ side: str, block_name: str, arm_positions: list[float]
+) -> None:
+ """Recorded pregrasp arm poses must retain a block during a 100 mm lift and 225 mm carry."""
+ mujoco.mj_loadAllPluginLibraries(
+ str(Path(get_package_prefix("mujoco_package_uri")) / "bin" / "mujoco_plugin")
+ )
+ scene = (
+ Path(get_package_share_directory("dual_arm_sim"))
+ / "description/mujoco/scene.xml"
+ )
+ model = mujoco.MjModel.from_xml_path(str(scene))
+ data = mujoco.MjData(model)
+ mujoco.mj_resetDataKeyframe(model, data, model.key("default").id)
+ for number, position in enumerate(arm_positions, start=1):
+ name = f"{side}_fr3v2_joint{number}"
+ data.qpos[model.jnt_qposadr[model.joint(name).id]] = position
+ data.ctrl[model.actuator(name).id] = position
+ for number in (1, 2):
+ name = f"{side}_fr3v2_finger_joint{number}"
+ data.qpos[model.jnt_qposadr[model.joint(name).id]] = 0.035
+ gripper = model.actuator(f"{side}_fr3v2_finger_joint1").id
+ spine = model.actuator("franka_spine_vertical_joint").id
+ initial_spine = data.ctrl[spine]
+ carry = model.actuator("planar_y").id
+ tcp = model.body(f"{side}_fr3v2_hand_tcp").id
+ block = model.body(block_name).id
+ table = model.geom("table_front").id
+ mujoco.mj_forward(model, data)
+ table_top = data.geom_xpos[table, 2] + model.geom_size[table, 2]
+ block_half_width = model.geom_size[model.body_geomadr[block], 2]
+ initial_relative = None
+ max_slip = 0.0
+ for step in range(round(5.5 / model.opt.timestep)):
+ time = step * model.opt.timestep
+ # Let the blocks settle, close, then lift with the spine and carry with the base.
+ data.ctrl[gripper] = 0.035 if time < 0.5 else 0.0
+ lift = np.clip(time - 1.5, 0.0, 1.0)
+ data.ctrl[spine] = initial_spine + 0.1 * (3 * lift**2 - 2 * lift**3)
+ phase = np.clip(time - 3.0, 0.0, 1.5) / 1.5
+ direction = 1 if side == "left" else -1
+ data.ctrl[carry] = direction * 0.3 * np.sin(np.pi * phase) ** 2
+ mujoco.mj_step(model, data)
+ assert np.isfinite(data.qpos).all(), (side, time, "nonfinite position")
+ assert np.isfinite(data.qvel).all(), (side, time, "nonfinite velocity")
+ relative = data.xmat[tcp].reshape(3, 3).T @ (data.xpos[block] - data.xpos[tcp])
+ if time >= 1.5:
+ if initial_relative is None:
+ initial_relative = relative.copy()
+ max_slip = max(max_slip, np.linalg.norm(relative - initial_relative))
+ # A pad is 18.5 mm tall: 10 mm drift is already over half its height, not a stable grasp.
+ assert max_slip < 0.010, (side, "block slipped relative to hand", max_slip)
+ assert data.xpos[block, 2] - block_half_width > table_top + 0.075, (
+ side,
+ "block did not stay above the table through carry",
+ data.xpos[block].copy(),
+ )
+
+
+@pytest.mark.parametrize(
+ "filename,block_name",
+ [
+ ("right_arm_carry.json", "block_red_1"),
+ ("right_arm_far_block_carry.json", "block_red_3"),
+ ],
+)
+def test_regression_full_arm_carry_keeps_block_in_hand(
+ filename: str, block_name: str
+) -> None:
+ """Recorded arm carries must retain both near and far blocks at the Objective's speed."""
+ mujoco.mj_loadAllPluginLibraries(
+ str(Path(get_package_prefix("mujoco_package_uri")) / "bin" / "mujoco_plugin")
+ )
+ scene = (
+ Path(get_package_share_directory("dual_arm_sim"))
+ / "description/mujoco/scene.xml"
+ )
+ model = mujoco.MjModel.from_xml_path(str(scene))
+ data = mujoco.MjData(model)
+ trajectory = json.loads((Path(__file__).parent / "data" / filename).read_text())
+ for name, positions in trajectory["initial_joint_positions"].items():
+ address = model.jnt_qposadr[model.joint(name).id]
+ data.qpos[address : address + len(positions)] = positions
+ # test_sort_blocks.cpp checks this scale at both planners' input ports.
+ times = np.asarray(trajectory["time"]) / 0.25
+ commands = np.asarray(trajectory["commands"])
+ actuators = [model.actuator(name).id for name in trajectory["actuator_names"]]
+ gripper = model.actuator("right_fr3v2_finger_joint1").id
+ data.ctrl[model.actuator("left_fr3v2_finger_joint1").id] = 0.035
+ block = model.body(block_name).id
+ tcp = model.body("right_fr3v2_hand_tcp").id
+ for step in range(round((times[-1] + 0.5) / model.opt.timestep)):
+ time = step * model.opt.timestep
+ # Only actuators drive the articulated robot after its initial state is set.
+ for column, actuator in enumerate(actuators):
+ data.ctrl[actuator] = np.interp(time, times, commands[:, column])
+ data.ctrl[gripper] = 0.035 if time < 0.45 else 0.0
+ mujoco.mj_step(model, data)
+ assert np.isfinite(data.qpos).all(), (time, "nonfinite position")
+ assert np.isfinite(data.qvel).all(), (time, "nonfinite velocity")
+ if time > 6.0:
+ relative = data.xmat[tcp].reshape(3, 3).T @ (
+ data.xpos[block] - data.xpos[tcp]
+ )
+ assert abs(relative[2]) < 0.010, (
+ time,
+ "block slipped down out of pads",
+ relative,
+ )
+ # A half-block-width lateral shift puts its center outside the initial grasp.
+ assert np.linalg.norm(relative[:2]) < 0.025, (
+ time,
+ "block left the grasp",
+ relative,
+ )
+ finger_contacts = set()
+ for contact in data.contact[: data.ncon]:
+ bodies = {model.body(int(model.geom_bodyid[g])).name for g in contact.geom}
+ if block_name in bodies:
+ finger_contacts.update(name for name in bodies if "finger" in name)
+ assert finger_contacts, "block lost both finger contacts during the final hold"
+ assert (
+ data.xpos[block, 2] > 0.85
+ ), "block fell instead of being carried above the table"
diff --git a/src/dual_arm_sim/test/test_sort_blocks.cpp b/src/dual_arm_sim/test/test_sort_blocks.cpp
index 17f7ca2c8..1fd128782 100644
--- a/src/dual_arm_sim/test/test_sort_blocks.cpp
+++ b/src/dual_arm_sim/test/test_sort_blocks.cpp
@@ -41,18 +41,21 @@ namespace
{
struct Scenario
{
- std::deque choose_right{ true };
std::deque red;
std::deque green;
std::string fail_at;
int fail_on_call = 1;
std::string hold_at;
+ int hold_on_call = 1;
std::map calls;
std::vector motions;
+ std::vector transfer_steps;
+ std::vector carry_speeds;
+ std::vector carry_accelerations;
int halts = 0;
};
-bool consume(std::deque& results)
+[[nodiscard]] bool consume(std::deque& results)
{
if (results.empty())
{
@@ -71,25 +74,37 @@ class Operation : public BT::StatefulActionNode
{
}
- static BT::PortsList providedPorts()
+ [[nodiscard]] static BT::PortsList providedPorts()
{
- return { BT::InputPort("operation"), BT::InputPort("arm") };
+ return { BT::InputPort("operation"),
+ BT::InputPort("arm"),
+ BT::InputPort("carry_speed"),
+ BT::InputPort("carry_acceleration"),
+ BT::InputPort("solution"),
+ BT::OutputPort("pickup_solution"),
+ BT::OutputPort("carry_solution"),
+ BT::OutputPort("detections_empty", "{detections_empty}",
+ "Successful segmentation found no objects.") };
}
private:
- BT::NodeStatus onStart() override
+ [[nodiscard]] BT::NodeStatus onStart() override
{
- const auto operation = getInput("operation").value();
- const auto key = operation + ":" + getInput("arm").value();
+ const std::string operation = getInput("operation").value();
+ const std::string key = operation + ":" + getInput("arm").value();
const int call = ++scenario_.calls[key];
- if (operation == "BiasedCoinFlip")
+ if (const auto speed = getInput("carry_speed"); speed.has_value())
{
- return consume(scenario_.choose_right) ? BT::NodeStatus::SUCCESS : BT::NodeStatus::FAILURE;
+ scenario_.carry_speeds.push_back(speed.value());
+ scenario_.carry_accelerations.push_back(getInput("carry_acceleration").value());
}
if (operation == "Find Red Block" || operation == "Find Green Block")
{
- return consume(operation == "Find Red Block" ? scenario_.red : scenario_.green) ? BT::NodeStatus::SUCCESS :
- BT::NodeStatus::FAILURE;
+ const bool failed = key == scenario_.fail_at && call == scenario_.fail_on_call;
+ const bool found = !failed && consume(operation == "Find Red Block" ? scenario_.red : scenario_.green);
+ // A failed segmentation/fit is not evidence that the table is empty.
+ setOutput("detections_empty", !failed && !found);
+ return found ? BT::NodeStatus::SUCCESS : BT::NodeStatus::FAILURE;
}
if (operation == "Execute MTC Solution" || operation == "Move to Waypoint" ||
operation.find("Gripper") != std::string::npos)
@@ -100,12 +115,28 @@ class Operation : public BT::StatefulActionNode
{
return BT::NodeStatus::FAILURE;
}
- return key == scenario_.hold_at ? BT::NodeStatus::RUNNING : BT::NodeStatus::SUCCESS;
+ if (operation == "Plan Block Transfer")
+ {
+ const std::string arm = getInput("arm").value();
+ setOutput("pickup_solution", arm + " pickup");
+ setOutput("carry_solution", arm + " carry");
+ scenario_.transfer_steps.push_back(key);
+ }
+ else if (operation == "Execute MTC Solution")
+ {
+ scenario_.transfer_steps.push_back(getInput("solution").value());
+ }
+ else if (operation.find("Gripper") != std::string::npos)
+ {
+ scenario_.transfer_steps.push_back(key);
+ }
+ return key == scenario_.hold_at && call == scenario_.hold_on_call ? BT::NodeStatus::RUNNING :
+ BT::NodeStatus::SUCCESS;
}
- BT::NodeStatus onRunning() override
+ [[nodiscard]] BT::NodeStatus onRunning() override
{
- const auto key = getInput("operation").value() + ":" + getInput("arm").value();
+ const std::string key = getInput("operation").value() + ":" + getInput("arm").value();
return key == scenario_.fail_at ? BT::NodeStatus::FAILURE : BT::NodeStatus::RUNNING;
}
@@ -133,6 +164,19 @@ void substituteOperations(tinyxml2::XMLElement* element, std::string arm = "")
const std::string id = element->Attribute("ID") ? element->Attribute("ID") : "";
if (tag == "SubTree" || (tag == "Action" && id != "Script"))
{
+ const std::string carry_speed = element->Attribute("carry_speed") ? element->Attribute("carry_speed") : "";
+ const std::string carry_acceleration =
+ element->Attribute("carry_acceleration") ? element->Attribute("carry_acceleration") : "";
+ const std::string detections_empty =
+ element->Attribute("detections_empty") ? element->Attribute("detections_empty") : "";
+ std::map solution_ports;
+ for (const auto* port : { "solution", "pickup_solution", "carry_solution" })
+ {
+ if (const auto* value = element->Attribute(port))
+ {
+ solution_ports.emplace(port, value);
+ }
+ }
std::vector attributes;
for (auto* attribute = element->FirstAttribute(); attribute; attribute = attribute->Next())
{
@@ -149,6 +193,19 @@ void substituteOperations(tinyxml2::XMLElement* element, std::string arm = "")
element->SetAttribute("ID", "Operation");
element->SetAttribute("operation", id.c_str());
element->SetAttribute("arm", arm.c_str());
+ for (const auto& [port, value] : solution_ports)
+ {
+ element->SetAttribute(port.c_str(), value.c_str());
+ }
+ if (!carry_speed.empty())
+ {
+ element->SetAttribute("carry_speed", carry_speed.c_str());
+ element->SetAttribute("carry_acceleration", carry_acceleration.c_str());
+ }
+ if (!detections_empty.empty())
+ {
+ element->SetAttribute("detections_empty", detections_empty.c_str());
+ }
}
for (auto* child = element->FirstChildElement(); child; child = child->NextSiblingElement())
{
@@ -159,7 +216,7 @@ void substituteOperations(tinyxml2::XMLElement* element, std::string arm = "")
class SortBlocks : public ::testing::Test
{
public:
- BT::Tree makeTree()
+ [[nodiscard]] BT::Tree makeTree()
{
tinyxml2::XMLDocument source;
if (source.LoadFile(SORT_BLOCKS_XML) != tinyxml2::XML_SUCCESS)
@@ -174,11 +231,11 @@ class SortBlocks : public ::testing::Test
return factory.createTreeFromText(printer.CStr());
}
- static BT::NodeStatus finish(BT::Tree& tree)
+ [[nodiscard]] static BT::NodeStatus finish(BT::Tree& tree)
{
for (int tick = 0; tick < 100; ++tick)
{
- const auto status = tree.tickExactlyOnce();
+ const BT::NodeStatus status = tree.tickExactlyOnce();
if (status != BT::NodeStatus::RUNNING)
{
return status;
@@ -193,37 +250,93 @@ class SortBlocks : public ::testing::Test
TEST_F(SortBlocks, EmptyTableSucceedsWithoutMotion)
{
+ // GIVEN neither color has detections.
auto tree = makeTree();
+ // WHEN the sort loop checks both colors.
EXPECT_EQ(finish(tree), BT::NodeStatus::SUCCESS);
+ // THEN success requires no motion.
EXPECT_TRUE(scenario.motions.empty());
}
TEST_F(SortBlocks, BothArmsCompleteBeforeExhaustionSucceeds)
{
- scenario.choose_right = { true, false, true };
+ // GIVEN one detected block of each color.
scenario.red = { true, false };
scenario.green = { true, false };
auto tree = makeTree();
+ // WHEN the sort loop completes.
EXPECT_EQ(finish(tree), BT::NodeStatus::SUCCESS);
+ // THEN both arms pick, place and return home before exhaustion.
EXPECT_EQ(scenario.calls["Execute MTC Solution:right"], 2);
EXPECT_EQ(scenario.calls["Execute MTC Solution:left"], 2);
EXPECT_EQ(scenario.calls["Move to Waypoint:right"], 1);
EXPECT_EQ(scenario.calls["Move to Waypoint:left"], 1);
}
+TEST_F(SortBlocks, RegressionEmptyGreenDetectionsDoNotLeaveRedBlocksUnprocessed)
+{
+ // GIVEN three red blocks and no green blocks.
+ scenario.red = { true, true, true, false };
+ auto tree = makeTree();
+
+ // WHEN the actual Sort Blocks control flow reaches terminal success.
+ EXPECT_EQ(finish(tree), BT::NodeStatus::SUCCESS);
+
+ // THEN every red block must be picked and placed, and both colors must have been checked for exhaustion.
+ EXPECT_EQ(scenario.calls["Execute MTC Solution:right"], 6);
+ EXPECT_EQ(scenario.calls["Find Red Block:right"], 4);
+ EXPECT_GE(scenario.calls["Find Green Block:left"], 1);
+ EXPECT_TRUE(scenario.red.empty());
+}
+
+TEST_F(SortBlocks, RegressionBothColorsAreExhaustedBeforeSuccess)
+{
+ // GIVEN three blocks of each color.
+ scenario.red = { true, true, true, false };
+ scenario.green = { true, true, true, false };
+ auto tree = makeTree();
+
+ // WHEN the actual Sort Blocks control flow finishes.
+ EXPECT_EQ(finish(tree), BT::NodeStatus::SUCCESS);
+
+ // THEN all six picks and placements occurred, and neither detection queue retains a block.
+ EXPECT_EQ(scenario.calls["Execute MTC Solution:right"], 6);
+ EXPECT_EQ(scenario.calls["Execute MTC Solution:left"], 6);
+ EXPECT_TRUE(scenario.red.empty());
+ EXPECT_TRUE(scenario.green.empty());
+ EXPECT_EQ(scenario.calls["Plan Block Transfer:right"], 3);
+ EXPECT_EQ(scenario.calls["Plan Block Transfer:left"], 3);
+ ASSERT_EQ(scenario.carry_speeds.size(), 6);
+ for (const double speed : scenario.carry_speeds)
+ {
+ EXPECT_DOUBLE_EQ(speed, 0.25);
+ }
+ ASSERT_EQ(scenario.carry_accelerations.size(), 6);
+ for (const double acceleration : scenario.carry_accelerations)
+ {
+ EXPECT_DOUBLE_EQ(acceleration, 0.0625);
+ }
+}
+
class SortBlocksMotionFailure : public SortBlocks, public ::testing::WithParamInterface>
{
};
TEST_P(SortBlocksMotionFailure, AbortFailsImmediatelyWithoutTryingTheOtherArm)
{
+ // GIVEN a motion operation aborts for the selected arm.
scenario.red = { true };
scenario.green = { true };
scenario.fail_at = GetParam().first;
scenario.fail_on_call = GetParam().second;
- scenario.choose_right = { scenario.fail_at.find(":right") != std::string::npos };
+ if (scenario.fail_at.find(":left") != std::string::npos)
+ {
+ scenario.red.clear();
+ }
auto tree = makeTree();
+ // WHEN the abort reaches the sort loop.
EXPECT_EQ(finish(tree), BT::NodeStatus::FAILURE);
+ // THEN no later motion or other-arm attempt is allowed.
ASSERT_FALSE(scenario.motions.empty());
EXPECT_EQ(scenario.motions.back(), scenario.fail_at);
const std::string other_arm = scenario.fail_at.find(":right") != std::string::npos ? "left" : "right";
@@ -247,27 +360,155 @@ INSTANTIATE_TEST_SUITE_P(
TEST_F(SortBlocks, ControllerAbortAfterRunningFailsWithoutMovingOtherArm)
{
+ // GIVEN the right controller is executing a trajectory.
scenario.red = { true };
scenario.green = { true };
scenario.hold_at = "Execute MTC Solution:right";
auto tree = makeTree();
ASSERT_EQ(tree.tickExactlyOnce(), BT::NodeStatus::RUNNING);
+ // WHEN it aborts after returning RUNNING.
scenario.fail_at = scenario.hold_at;
EXPECT_EQ(finish(tree), BT::NodeStatus::FAILURE);
+ // THEN the left arm remains idle.
EXPECT_EQ(scenario.calls["Execute MTC Solution:left"], 0);
EXPECT_EQ(scenario.motions.back(), scenario.fail_at);
}
-TEST_F(SortBlocks, CancellationHaltsMotion)
+class SortBlocksPerceptionFailure : public SortBlocks, public ::testing::WithParamInterface
{
+};
+
+TEST_P(SortBlocksPerceptionFailure, RegressionPerceptionErrorCannotSucceedAsExhaustion)
+{
+ // GIVEN a perception error for either color, not a valid empty detection result.
scenario.red = { true };
- scenario.hold_at = "Execute MTC Solution:right";
+ scenario.green = { true };
+ scenario.fail_at = GetParam();
+ if (scenario.fail_at == "Find Green Block:left")
+ {
+ scenario.red.clear();
+ }
+ auto tree = makeTree();
+
+ // WHEN the Find subtree fails.
+ EXPECT_EQ(finish(tree), BT::NodeStatus::FAILURE);
+
+ // THEN no arm may move, and a red perception error must not fall through to green.
+ EXPECT_TRUE(scenario.motions.empty());
+ if (scenario.fail_at == "Find Red Block:right")
+ {
+ EXPECT_EQ(scenario.calls["Find Green Block:left"], 0);
+ }
+
+ // A later successful empty detection must not retain this failure.
+ scenario.fail_at.clear();
+ scenario.red.clear();
+ scenario.green.clear();
+ EXPECT_EQ(finish(tree), BT::NodeStatus::SUCCESS);
+}
+
+INSTANTIATE_TEST_SUITE_P(BothColors, SortBlocksPerceptionFailure,
+ ::testing::Values("Find Red Block:right", "Find Green Block:left"),
+ [](const ::testing::TestParamInfo& info) {
+ return info.param == "Find Red Block:right" ? "Red" : "Green";
+ });
+
+TEST_F(SortBlocks, RegressionPoseTransformFailureCannotSucceedAsExhaustion)
+{
+ // GIVEN a detected red block whose pose cannot be transformed.
+ scenario.red = { true };
+ scenario.green = { true };
+ scenario.fail_at = "TransformPose:right";
+ auto tree = makeTree();
+
+ // WHEN the pose conversion fails before grasp planning.
+ EXPECT_EQ(finish(tree), BT::NodeStatus::FAILURE);
+
+ // THEN neither stale-pose motion nor the other color's branch is allowed.
+ EXPECT_TRUE(scenario.motions.empty());
+ EXPECT_EQ(scenario.calls["Find Green Block:left"], 0);
+}
+
+class SortBlocksPlanFailure : public SortBlocks, public ::testing::WithParamInterface
+{
+};
+
+TEST_P(SortBlocksPlanFailure, RegressionTransferMustPlanBeforeGraspExecution)
+{
+ // GIVEN one block and an infeasible continuation after its grasp.
+ const std::string arm = GetParam();
+ scenario.red = arm == "right" ? std::deque{ true } : std::deque{};
+ scenario.green = { true };
+ scenario.fail_at = "Plan Block Transfer:" + arm;
+ auto tree = makeTree();
+
+ // WHEN complete transfer planning fails.
+ EXPECT_EQ(finish(tree), BT::NodeStatus::FAILURE);
+
+ // THEN the open gripper never approaches or closes on a block with no carry path.
+ EXPECT_EQ(scenario.calls[scenario.fail_at], 1);
+ EXPECT_EQ(scenario.calls["Execute MTC Solution:" + arm], 0);
+ EXPECT_EQ(scenario.calls["Close Right Gripper:right"], 0);
+ EXPECT_EQ(scenario.calls["Close Left Gripper:left"], 0);
+ if (arm == "right")
+ {
+ EXPECT_EQ(scenario.calls["Find Green Block:left"], 0);
+ }
+}
+
+INSTANTIATE_TEST_SUITE_P(BothArms, SortBlocksPlanFailure, ::testing::Values("right", "left"),
+ [](const ::testing::TestParamInfo& info) { return info.param; });
+
+TEST_F(SortBlocks, RegressionGrippersCloseBetweenPickupAndCarrySolutions)
+{
+ // GIVEN one block for each arm and distinguishable pickup/carry solutions from the planner.
+ scenario.red = { true };
+ scenario.green = { true };
+ auto tree = makeTree();
+
+ // WHEN both transfers complete through the shipped SubTree port mappings.
+ EXPECT_EQ(finish(tree), BT::NodeStatus::SUCCESS);
+
+ // THEN each hand closes only after pickup and opens only after its own carry, not the other arm's solution.
+ EXPECT_EQ(scenario.transfer_steps,
+ (std::vector{ "Open Right Gripper:right", "Plan Block Transfer:right", "right pickup",
+ "Close Right Gripper:right", "right carry", "Open Right Gripper:right",
+ "Open Left Gripper:left", "Plan Block Transfer:left", "left pickup",
+ "Close Left Gripper:left", "left carry", "Open Left Gripper:left" }));
+}
+
+class SortBlocksCancellation : public SortBlocks, public ::testing::WithParamInterface>
+{
+};
+
+TEST_P(SortBlocksCancellation, CancellationHaltsPlanningOrMotionWithoutClosingOrContinuing)
+{
+ // GIVEN an active complete-transfer plan, pickup, or carry.
+ scenario.red = { true };
+ scenario.hold_at = GetParam().first;
+ scenario.hold_on_call = GetParam().second;
auto tree = makeTree();
ASSERT_EQ(tree.tickExactlyOnce(), BT::NodeStatus::RUNNING);
+ const auto previous_motions = scenario.motions;
+
+ // WHEN the Objective is cancelled.
tree.haltTree();
+
+ // THEN the active operation is halted, no later gripper or motion runs, and a later run starts cleanly.
EXPECT_EQ(scenario.halts, 1);
+ EXPECT_EQ(scenario.motions, previous_motions);
scenario.hold_at.clear();
scenario.red.clear();
EXPECT_EQ(finish(tree), BT::NodeStatus::SUCCESS);
}
+
+INSTANTIATE_TEST_SUITE_P(TransferStages, SortBlocksCancellation,
+ ::testing::Values(std::make_pair("Plan Block Transfer:right", 1),
+ std::make_pair("Execute MTC Solution:right", 1),
+ std::make_pair("Execute MTC Solution:right", 2)),
+ [](const ::testing::TestParamInfo>& info) {
+ return info.param.first == "Plan Block Transfer:right" ? "Plan" :
+ info.param.second == 1 ? "Pickup" :
+ "Carry";
+ });
} // namespace
From 5b43cb71cc1e1ca65e4f12a877c50cbc4515a9cd Mon Sep 17 00:00:00 2001
From: Griswald Brooks
Date: Tue, 3 Nov 2026 17:52:35 -0500
Subject: [PATCH 2/4] no-mistakes(review): Isolate block transfer test config
load in tmp workspace
---
src/dual_arm_sim/test/test_block_transfer.py | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/dual_arm_sim/test/test_block_transfer.py b/src/dual_arm_sim/test/test_block_transfer.py
index c6fbc6fef..f995bbc39 100644
--- a/src/dual_arm_sim/test/test_block_transfer.py
+++ b/src/dual_arm_sim/test/test_block_transfer.py
@@ -81,7 +81,9 @@ def transfer_plans(tmp_path_factory):
unreachable["name"] = "unreachable"
unreachable["approach"]["xyz"][0] = 2.5
cases.append(unreachable)
- config, _, _ = load_system_config("dual_arm_sim", Path(os.environ["USER_WS"]))
+ config, _, _ = load_system_config(
+ "dual_arm_sim", tmp_path_factory.mktemp("user_ws")
+ )
description = config.hardware.robot_description
params = {
"robot_description": create_xml_from_xacro(
From 416899d2f9afa983e08e781a06e7b9275ae807e5 Mon Sep 17 00:00:00 2001
From: Griswald Brooks
Date: Tue, 3 Nov 2026 18:13:16 -0500
Subject: [PATCH 3/4] no-mistakes(document): Note dual_arm_sim block regression
tests in README layout
---
src/dual_arm_sim/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/dual_arm_sim/README.md b/src/dual_arm_sim/README.md
index e0c439476..03d40322d 100644
--- a/src/dual_arm_sim/README.md
+++ b/src/dual_arm_sim/README.md
@@ -120,4 +120,4 @@ moveit_pro run -c dual_arm_sim
| `maps/`, `params/` | the Nav2 map and parameters |
| `objectives/`, `waypoints/` | Objectives, drawing paths and saved waypoints |
| `scripts/` | the odometry and `/cmd_vel` bridges, the map generator, and the SVG drawing tools (see `scripts/README.md`) |
-| `test/` | the scene, bridge and Objectives integration tests |
+| `test/` | the scene, bridge and Objectives integration tests, and the block grasp, surface and transfer regressions with their recorded inputs in `test/data/` |
From ec62022250d88138d9fbe9afe976292b0a55f706 Mon Sep 17 00:00:00 2001
From: Sanchit Badamikar
Date: Thu, 5 Nov 2026 14:50:44 -0700
Subject: [PATCH 4/4] fix(franka_meshes): list modified test_meshes.py in
UPSTREAM.yaml
---
src/external_dependencies/franka_meshes/UPSTREAM.yaml | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/external_dependencies/franka_meshes/UPSTREAM.yaml b/src/external_dependencies/franka_meshes/UPSTREAM.yaml
index 20abaff69..4f1a296e7 100644
--- a/src/external_dependencies/franka_meshes/UPSTREAM.yaml
+++ b/src/external_dependencies/franka_meshes/UPSTREAM.yaml
@@ -22,6 +22,7 @@ pruned_paths:
- everything in the upstream workspace other than src/franka_meshes, which is a robot configuration workspace rather than a mesh package
modified_paths:
- src/franka_meshes/script/generate_collision_decomposition.py
+ - src/franka_meshes/test/test_meshes.py
apache_paths:
- .
notes:
@@ -31,5 +32,6 @@ notes:
- Vendored from PickNik's own repository rather than a third-party one, which is why the parts can live inside the snapshot: a vendored refresh resyncs them from their real source. The earlier attempt put them inside the third-party franka_description snapshot, where a refresh would have discarded PickNik files that upstream never had.
- The snapshot mirrors the upstream path src/franka_meshes rather than flattening it, because the package lives in a workspace repository; snapshot_path is left at its default so a refresh maps each vendored path straight onto its upstream path.
- Pinned to the merge commit that landed franka_meshes on upstream main, so drift tracking resolves a real branch tip rather than a pull-request head.
- - The one modified file is the generator's source-mesh lookup, which upstream resolves against its own workspace. It now tries that path first and a vendoring layout second, so the script and its check still run here; nothing else in it changed.
+ - The generator's source-mesh lookup is modified: upstream resolves it against its own workspace, and it now tries that path first and a vendoring layout second, so the script and its check still run here; nothing else in the generator changed.
- The visual meshes are DAE conversions of the same franka_description geometry. dual_arm_sim's MJCF loads them as its visual geoms, which previously rendered the collision meshes and so looked coarser than the real robot.
+ - test_meshes.py is also modified: it takes its franka_description mesh directory from the generator's SOURCE_MESHES instead of a fixed path inside the upstream workspace, so it resolves the same way in both layouts.