From 992f44cdbd9a1e720f31f88c707c4556468f96c6 Mon Sep 17 00:00:00 2001 From: vividf Date: Thu, 25 Apr 2024 15:05:44 +0900 Subject: [PATCH] fix grammar errors Signed-off-by: vividf --- .../marker_radar_lidar_calibrator/menu2.jpg | Bin 37341 -> 22937 bytes .../tutorials/mapping_based_calibrator.md | 8 +++--- .../marker_radar_lidar_calibrator.md | 26 +++++++++--------- .../tutorials/tag_based_pnp_calibrator.md | 16 +++++------ sensor/mapping_based_calibrator/README.md | 4 +-- .../marker_radar_lidar_calibrator/README.md | 4 +-- .../src/marker_radar_lidar_calibrator.cpp | 2 +- sensor/tag_based_pnp_calibrator/README.md | 14 ++++------ 8 files changed, 35 insertions(+), 39 deletions(-) diff --git a/sensor/docs/images/marker_radar_lidar_calibrator/menu2.jpg b/sensor/docs/images/marker_radar_lidar_calibrator/menu2.jpg index d497e80dbedbff26c17461fff78f3c4883d90f92..350a97206f93dbcb15f19af8c9188429ad3f21e3 100644 GIT binary patch literal 22937 zcmeIa1z23m(kME(1$TFX69|$(aEA;o!9BqSNw5SNLVzH_9YXLRgFAx^65JhTfFOYo z+zI|jviCmr&VSB(_ulXR_uO6ZbyZhY*IHd&-BW9=Uh8J&W)VQ3qM)n*KtcilkZ%6~ zH`f4qS!a;TbDI}0Y^)h9UozOc*gWHTZe#Tu^9BJ31fc!_=;&zZ=$II{fO!Y&2izgP zgLmilpO}z@0H1(_kdB;`l$?%2r-e!Q3g?v zm;lIxNGOCzH=h7BKl*`;@}o1q11cIiG71I~<_#Qx`HO#5{JZQYrstneV%+SxN>#l9 zNce^PlD*6c<}A^-{&qww7A&GRQ|kzR1f=wnsQe+tAjG(|tSY;M*+&>as&`k!Xq^%$YlxrZ>e^3aDTw9!nP_>mDTf^tGA}X;%Qa1v0aYSe~51h zWa=y^p7~#M01r%moPFnEKcEZx;+KTK^nL433a{wXZMRb;T|f6bNl905w$iK8CaR%{x#0I(?VWX)ZFNAr}=&jFN(?LFYzCC*Ij?b0$!x~PYH&uj^T!FSZJ?mi;YNej69|sxJzK{z{qkujpG6`Bo1o z1t6OF3p??v!PsxL_+J=VlgIz3+8;_-1_;r?Tk{Ip_E^Oe3qlcV{#a7Kq(C{1Kh%CF z6f%FO{(|xU%buY8){`e>ME(H4loSBK{iLDr7X1#~zZ1VOaw`CB@UL0egQ@<1T?Zhy zS!V(O#v^}Wq7CIvx!?K&Csl>lom|+N%pUOLV7GwuLh2{}>jEeBuWP?(l-oYA5&)1; zP*86d`QHbH7>$G!85JD`gMbKt#Gqk*kNmgA9tjz6U0Vc!jW(|so`j#D$o6}l)i!#+?D-AA z?fkeKW?J}ll1A}=8<;o{1TtdE{7)%VfnbswK)w2s`n!$?x(j^gJhkpoU$MLw;$okr zTNRG80N;+WwS#)w`NvUqYrXbR_8 zN=>%$Qu{y>8UlWt(Vjtz{6FO^U-{hK%kQLPXK%g~>mPKOBvtP?s#rG6U(!FgJqXFm z##9oHZ(kmwCCb%o?vWGm2#`#AKPto4zr=2OJfieOLAQ1127nHWzb5&f^L=9!jQx|` zv7+eWfA>FHM0{S743gX-{;s{e&`&bRKM+AI&@lHn-=!R%$dizn@6%y8&GPv3!nt?j zEQWpDS2utkj=^~%5Q&(4I}hsYx(oJy!urIV5|2J|yHbxfD-^MPp2$(=Z}9P#Dw5ND zqsKO)?tdY|ZwF)hXs$^|+wtB2g5b^2W(RQAHv(uG}lNK>$ZRS#<`N) zb9!irZ8LYB!CC?orudc1>bjyhlpL$-^88x+)(KIIq*^xsnP1LMkXJXoZno2Q#l_9C z!NtYR`%(ORu&Zq1Ewd87Inl}aJWPO2&}k=utAv=n1`0D$haGI}ra@pr?rt?Y2h>JU zyu6nUEv1cUCagT(VO*>Hn%b;cvZl*n*O1@Neh@V9WG>-O4ku#Mv1s82aJO{h;MB3K z;52sjsYqCzm+6P)LYr{=Bo%$Sgz=JpGPhEw{3zngYHVmc#*V=X$4;v#(yaHH)cb36 zoLthm*P0AZ@l{nJ?jwBLd{ZwR1P#Zg1gEMXG+EDR)YO~i2JH00gC6C`j1`;avJO~? zImE3`=#HxNl#p{fLbMBsk*ZIZOT+Z!&1;_7rdG+cyC;A-Zl{`JUrB%pxT{%fY^=|d zgS21u-v?XWJuEA3Lj!NhnxJ^D584icAF3Yz7B~Z%_aD(S zd>W~iDE`*%V)K}g&*28}hgfnUfJs^T6eQA#x79T`x+H z{~c%i8~*y|DmMU?-P<)pg3$e+1m0g(`_zYYAGB5GgY{tbg$7vvN}bRU_M;2R#eXsI zPpB-D1Mwm%UfOR+4=MhM%3pqOvh;s07rB4o{0~rAYDu@&1eN~xz}*|b%iEMi`A5ov zjEsqbf{lvyBXN}qV@3%`bTLR7n3(yc-Et~fHJ(=q+}AX> zAk%UszxSHO(z=?>qy4wE21OEZ1MtXXis8*w*`Jv40vC;>X4a>1!lIV833SQE?X>qV zxw^GqFI^WZ*#>fzkk8!tZa-!AO|h)AdQxg{8zTXuPkwCtWv!|`>PfO|XyndB-C}B; z;SJ!6WXk-^nNEc*LhINt*B~Qyle+wT=rt!Jh!dm@C;9?PlT(hMM%{eq9K^k|%^5CnLR3>z85ju)U}9BnN z50Zdy%(9JWDpa>`=EB&?wf(mA8dd9*GF?kw(+T?aV^ow1yynPQeyhFwM9^^7sY(@Q zYEp6emB%a@m&>(Nmt@YZdy^Dxphf-E!v<;0EoE8jk(GB5SaBMj1Ee}TE1|w?{SeH> zOh{zNh6r6`D731lsie@t7i1}X*{u4=Y`TqSQ1ydV&EJX^SO*$6Wn_a1~aI1OTE7krG<&{DtbH!3o9R2Jr%7kLgzYV`tD8V+rTuw(f^T+ zVS|b2HK)Cd93R@Ge)#IQ2wMH+dt2mpJ_4OLMO?^mY!sNtH*Ns4Dp8Kt*x_Yod27eH zC)=DAcFqIimeTCDEsI3Qp|PeQWFwNiXW4gN$RBy9Nh znXbIIBI}ck=7%t&mFeWlwm^A{uM$fdOe}&b^=hNkJMZR>Qj$L3&h9v>nkrH%vUlpw z-1@@E=Vj)Ev#GX2DtY*VOLC=W3lozMwm9<2VA;-f9I#a5kg1t>@n)zoWe#onhC1OU zWBn4ld0I{b1{AL0kF6r__z(?=>>OigdB|#+?F@XR zTa79SDg7`eHjy?DQzBY8g4iRh-;^6Av-Djv*2*?=rV(yarRSVK*{)r(uMR5s`~=iP zK0`Xaj1CR5C*AN%>8qa`NQHF=E^OD<;yvt;n{~xE-1f>-)oLDu*%_T06(jD~da%-H zSX(K&-fQ!#&>u|V!L0Y$Z@K~GmpHY~ocd;XE#M6;G}p{rtG767fkPi@6^rP1UNi@P z7LY;~j#LRleDn`13J9}>Kny2a=4R!p5SH!c5yto4^$1YghlHv4hol~}G5`X6dr}MU zV3P0XOltC4(LzEbZvf*km`xXpI7QoFfU_+y7I~jo2jYm;At3@2TXdajyXX84h+Uo+9GIo*p_Obb{wPGF-3VCb#kP3}NeU~S`0bm^=ksBg2-2he) z&Wp?kZ^ue5QT;T|bz%Ndee^1IdxU4Q-}J7LCE0yBKesBb;^!HC$Gprsf`F0e<0TUQ zZ1Sha{__GxzfmEE`I&>;XhT(*UUU3(QK>PDW1GjuYP-S!xznGOKYj3jV;rpK-fy}m z#UcU-!m$&owWq@=lpLSE6ka-e2DZNev`DlK5A~#|2xh3RNR3ff zIk%?RMLE=oIM^Yqx_QcVv9uC`=0P!5xJEolh@cvyT5bp5ws4>3?aA6_kkTy&_Pq&R z6HqgZ6i(GZljajFXpYw@q9kEu=?t?6d*Q{g?N>neoNY-lHa87VL-Z&!gd8tdbG3>a z#jdgcB)@A>`Ei%rb#J7gP3=H` z^i3PvFuYWRF~~**`Z00XU2U45U=waC9{%5Q8a1suXz6XO(sS~gO;AO+zntS zd$ijb7cKrH3ALP9EJI5K1j44$J}K(jFi zg!VxqCeMHM;-qeJ+{F+>K7A?=q%?|Skez3z3+>4Dglw0hY;}%NdVJq`w+ygFH>~_{ zP)I5ASTMsIW?=6NXN`S=$ddRp3HIfjb;XLIB#@tBaFx$?$Mt!H(Q!3=g6H>C|1|vf zXu04Xm)zJ-fVnp_qqo}<;`QV>=3qf5Qaj!6rsK94_SV?}ckVSgHVQ>Q$ers>MFN?4 zdi4^dg<#b|HRSVC(ybG$(p{f3i)zwst(JeVw&>P&i8y`pBs{!CS>FPvZTOwlD6L*P zStPAUKFIUcF4gCzXY)q!*9-gL{ss2fdeuUe5@9T|S$_KXXV{+vujw7qE!ro zgkp)jbd1bt(94n(9gXr+aPD`~WYv!MWS3+)#jK)EFLK(4YVwdf*ep3G*$p8|hK(#m zc)E0Jb3~<#MAIBeLPhKfLUoGJqx+!!V$DO?bK9Yg@9*^nDy~E>~x1fz^4dG?1-+Et5 zJR|M6mVy2?-!v=4C%ZxH#Td@O=~wAcwC-FQH^!&Th&?HV6eM~0#k8*BPGR1Mz00f{ zKmll5DyfkH7@SH>qE{2P!K23axik$Y7m{A4>@nw*5$nL#De%dusHs+@G+)tj#I?0iT*l~ml z7Fw2K1Dt=V{73jj!#5%cUz3n2JGO{#Quop?YUbftirE6+vpvMy)$}XK)`gwqlw=L( zXS?9z_DzXL4;-_(Dp{c1)tHb%;dhgSoa9Y4_zN?qNd|Wj&%DGsY;_4AEADE_v&fr$ ziQe9yOOnv$&j~K6Gvjx}u=CJ1Aj<{XLyKshS@JU(@rZMDI*B<^gg&z5v}XukRtX4$ z#_bi5C9a6MfZg!>ESXg+<*Se0C?M#I!Xbub2ddJt5iZoZLT_2S5SB6$)cL^n86=eH zg81+@LW$!Osb(q5ua00}!tD}78Vl74mb?!xq2JN9;>jqi7-oM(|94?Odol(t2HR^3 zxZ!=HlC@mn?W?U_Bo8BqpNi46R|x+G9BO-E|6()8kk*}INKpvmi&467&^z<5i{>Gj z^55AVAZ3GK_S#L*_jWM?$5=~A>Jpt;)vg^|aEHg;X!v^0-0v??RhE=!!{-eQ5Hqr+YaV|s3F#(TkFV)DHD$J8}77e`6f)L2auBSyIK zpm=;V3?y*$)$Ijwr=6is`sMpZwr_S~e8VTekik|j)@+|eG11TZJ>*G-vRta84RC2} z+I7K*ll0e|S1cya=lBTT0O6-%c`^=~C7S|Ew4<8|cU0PHBf+Y8XDnDw;4MUIoU&2s+!S55-1 zejK%}e&VJLtH@PZX*rp|FvoNNPHj)4P3i&-Pio#CNY+MN*<9$aU%kmlNw``*0pr&D z8GMGfbYgslJ025aXJ-~=U+Ji~$Kfs*XjwG&b3PV%X`>vx%UyVHel>xOx~Vd^!!uDQ z+3BF~PnG`&za(_e%sL)35)~B`F|qaKuN?XPU0!|K{rBr67$}&gX4vrAX)m=3Xo*TO z^=(*2Av(MEyjQ$0^61_BJ=rPI*yPjPv{%Yn<^O%RIju z!~SYh=_o^mqOrSPG0HY6>jV*AJDu$QMgC=X^aw5;lI&E*nxj{Q9XAB6xr8#vDqs>K z$5R)|-O~SQ{KLU)L044e;*OMN-uY^sq1vSh8_bBJR>-yr!BZ#xDUtS}dL6H*l50tY zi+m-?MYwg5Z`ffKo{qB1lQd-RdJsHcbkp=iiZlOVjUJ`o0wV*(ba3ho;Hqf#25<&> zm(Kdu;i1M3*+n?5msDiEjIuCtIK*-CeBZUgsI(#zsgH*R3x|?sBFHwGFm1k&=sOWvWr+}sG*LW@ zJ7zxNX~UeU$79b0RQBhi{s4g6BV6)M_sMJ4mU(bXo4?-Xhj2AmclaF|m&yjjI>Q&e9r&PO|74HgMJ9gE6zmlqPYXFf*|UV|32v0u^h@+Jruqol5?FfQ+VH zcGMf2H}9$mynFP;Al3r16*Y&r-U01O3w_7hRH-o$j1-(D41&lxV8UlCX_A&isnX#Z z^6yHn!lD8qp`)uQpbrywnVXT>JFModVU#cr{JqK*$K>#cs71E0P(xZ?At>`yK4FN4 z%-o0&ud0|!$BxAn;tlNfiEGVZZV7$-;DOlGlAiM&5jq!~NMzA*;7*{njkX1Wk3?zF zsOtMdqBX>VfS)XpspC^+&|CV5sz$dI48j^058_SxX$_vxhYa2GxxH%r;7vkM(@shD zc^|Z9<07uTS_{ETGLv{3vo3YvO0d@JUccQU#&)N6B@j0te~~@(af3w#oLf(+EFw3J z!u)E?rh26s7h(rZATf5wIb}6su-(p{^uR5Q{xX=z+ZxBjyV^SxS1LRnLGhr(7nCjs zGpu&%i4L9yDG;&T&Ab<~8Tgv^lyDrsSoJhkFG|sAs9$e%-f&UODH#2!C7}r+3P>Zt zV^o9qQ_WPkLXb;sput;gYuUi9XQkS7)>aLRC6#!hN@kig0U+^9jjrcIL+q$3$)>>xNd4M2zVf)TUrueQf?V z;m_)SLvIKp_Ir@fbVAAXgR5u%SyrJ^ZCjHKI=|qX2aTdCpVmEHYbRv5I|;%}>a-ub zTo+zr3y*y&{c!&iYP|6~Y^GAiY{!kM+k~*n>5b?#D2dsVbJ;0SN`qAqH+q3!o5@~Y z8fY8VBIK0tqJDOz2a$$WOA`x6vIns^XiOQ_x)))W=9;*Z@a-SD8+k4)_#Z8aD?=4# zU8r?*r^_4+@(-zBn#@(OL@hHCun~))Ew-iB2Gu~GeG1anYj$^T?l|4FjyUo?+yZS8 z_~v?&<`ZjX^S#E-lRvuwT)&@h+y#qVTrcF#JJqF?7#?rJr!Tv=bHE0EljoA=U)OBF zUdMw0P-6G>SH&&$s)bb~P>`GFEbCI$%_}shZqWvD~Eo z$G#MCZq@K3!ws@ny+JD&oz+&dj5d7}e3ns4ofK6CnqIa_Hi_J`qSp}Z_?9*e6ls$3 z2D|{I*RyJRYV?T&SP9fcin;=x<;(YIiD%O^QYc1x+i8d;1>8rkjk>+u9|j4FUYs)BcP;qjAtFB<}=BH7!fo^6WU4 zMvD@u5gmn64MDY2*y&jeVnk#mFh5)TPJ*6&^8LzvLL^KtCPI+?M-&yOgDo;Fk8o^w zw!onPV*{#bJx*}0IU;eD8N>*e5xN@M&31S#s$mmqD5-t#p4UT< zE6!htOM#_`Ql$8^do8rudj++=r;A8N9&ifPnzq{Z*)mKizr>{S133?JB3Cm-Kw&}{LqwbMF z$fC;U(vCOKYToepKX*)Ac};%KR9_HQ{pq7&9O=n|#fU7ZtM|?w{Z10yN2KHkqFHQ{ zF7M?}N&{)bqTnTT1TdTR2GFkK&_u>d&?QyA!5N_Z?nvKy4Fd#@=wBdEUjTa=)3c=Qlu%*464cV!3n^6nu(CM;7S z1*w6$KDN{-uIa{QwGqxffJ5Fc*DhCodIDw}Fb1KpUJfvF zp#Js_v{-g9qJ)ZqqHLK(bX2QExYmhpsJ?up^<8WpQ!2;pzLW`Tj^Y~LzT2%4COVx% z)Wj>OuWi2QlEl%@ly1mR9;f+8b>9HuPvipndeT@6wz2@ubbg)xC(}$cKYYjLE57 zG+Ns<0t4d=IXQjTYiz0&(%F1YK3T*ueHRWqY;`Wek%rn~PQ2HhKn^V~Y=}vYAA#~T z&D66WD)fg0rjFavNHdrn%gE`R$c5IQ7V_M0aWio6vZd};-$9x_jlIU&iXdF)mQaXP zeQ98WRwbw{byuP?j1$|Qbe~6AW`;Nz8mOtPe@#?!s%oq{!NKlvrWv5EPQ+zfoV=Y? zM3+a8e++rCiA9+~*_qr2BSjkJxljrz0&SR;vIldBr*qHAF@RI;sgKIVa$|*X3Jtb!6kd7JZ^5(TK;TkQzbggQ?3o_%sC@ ztz9!PRBFYap`(nUdMul|G|p0KT(&xOPFyAdFvM&j6z~v8JlaV^s-H%y@)7QE-kzph zqLm!dF_!lT!7YHgQd+MB0C1Ejh58WQ-i69^LF?+p#3Bd`a?j4b<~X|kFIPmB9QRSqiEUXRXW;^( zm!tTIC^ZgemBtw^D@-z#*{RBnzFOa}#Vp!N92_&MVGVllkxeeVJXBp_to8XU&wAzZ zH{5KLVwi6<+a_Ncu)YL7f|X|;G<>M6={`QDuC#mK$&*q`0^B5TOP{=7-jA!oNY<9X z^Er4pU}IX{xO!Ta2jfM3m;WVBVD>bm@XTn{Zwg2Bs|{-OtL*jn9+7&@R`qxNzS&im6`GQII28;fl+JKos%HK6zsT}c&d^3I{Pr($)8kngE;d<4_&79{=` zRbsZ!xu51gB7EX*d2c1Ffk=v9fE7+GuTt55CVi%8)1TJ%^3{fbVZe6p@q+ww5?|*# zRxhlB@SkL5e)pXqd}f7oGh|_LcUGrXthCK#$StrIS)!BVzUiyay+*2uR@@`lO>`mLGjC2|kt(W*sKLKI}ywl&>3k+&uX z5wus1P}??HSH}px!E;s4Ljl30XSK5p&C%o5U3)m1LXQoXg|Nk9f#q-=4gr(+jcr~S zIX$z`;WbcV*WQn(bmywp^Luji*i~1?>-=RdeT00~?Z(8U=~Df>HN;`^B_ClU)O+fp z@FvyE_ht*X8H@KSukP2!EZw2bejRk;MQ)Q)@5Zwa!&!4(t_vP4vxBv?4|x+Y`B#m% z&qZFq>`3Z0vs;d6w|HgC;^&JDIFAKFIe z*&0k8v9i9h8SNP7D$mUY`4u?FAHSy9T;SK6AznpTEaWTshTNO%(aNLA@I=ukp^^2r zok-u8*J9nH3Vqe+QwqNuN}^mxvA;mblb|7A2fbk-(`AU!@bPXs(d&QSZ7+h!ii->g1e^#y`MUu;6rFeP{3!Ns|x$k!f@ z+!w6srx8=lW$tXLr$mmIB+{CkZT4e)aotYj1{H}$`5u~iHSJpK8NZ)X>VIF_nsKU8RC*0b@m@W6gRC(AE z1voJ$q{cIpYgHVI^ySinG)PS3~ZOrf-TkzPX&P1f$*1_o#FZC z;)fBF7ccZwg{HL+zd%=*)6KuQS4N;Fq_ z!#iI3uFa$059|vq?ZBu;sC+D}ENZOTn=UPhY;}5GT<+%)vwm`!oOtBxO@y#{WWaC{ zShPtQ6%UD5o!qsbe)R?`5Npgt$pu@`?4=8}md<@C0r4Ce9WyG|b*MDHyj$rim!gE% zXfV@UT74sX=QnLs*2;k@W@g%mbh{EwQhP4qyNJ>{?~o^3a0?sn1r`$a=;f)A|%AQL$VxraNOFO`n#* zND6nMd`wcYivh2R0Phsuq+NzFajLRYJgYc{mW0O%nb5TLLKX^5OiBTs+ zk3Me3(Zs2&&TnKki|0-1zHsiGUPMVNqrLST(>|wTy?5f-sjOagbCJerHYF53VT)VC z9xtb;K36I&efXwmbqPbIs#8Wi6!1ZfYmn{egI%CKSyVHhGWO%QWqh-g1{N+nJr8;BKb2n0&8EZD zWjbaOt5dBGPiQ?t->qOmxFt1!pGv(kOt^gqWr{P+OkXp>Hfwz<;u{)tU0cGjHtp&8 z9Bq2Nh#|<#F`>g%UeO~%yW?reEB&0!a)sm4U6j@uYB|?0b*CFFGNhWE&2^HiGQe2( z!Ed#y){-fifpv9&gAU#42DDjM{VOa|jvf!h<=z;XlW<#2xj=TuSg1Z$go^8)v){_F zz^pW`T;qiL-Xz@7yE9SzYA<*petm^o68V&EE&J2B+{@avCfxc(QXyn6e&)C?glr|} z#g39IxUgI4UDCC#-OA`7Q#!HIQ>8OyC$y2dsz&iKJu@_(7))#xWTd4=7W@)@_48*y zR)eEGSU56oOom6df8l;*Tp z_sy<}+qnM4t&4Mk9sagt&xYD6Vj2CcKq~>DVXZDp_1G(W+sd&yQLDQ6TMfxA#LglhoV1$OOH`tJNk)5-E zBepbq0@?x_uTiX5Y2yl0?N;9?e;QQDUQ?<7*j$mL>jEBwU$oG|$^YBy6TA z7CY&4Wf=6>m%6$zveyc@>jD>$rx>{J#P;SI%`|N3EWuuGfBML(_VB(f z84_kMC#T*(yl#?_y7jSo`IIvIg&kAnV2uIl4WNRw=i@8bf$5ZW<i&J%I5ERg{Pg!v9(@xK`Fe$+0v}Wm>eRK(l zyGqTFGS0>O>Mzm3>!+Nndz3eToHAq7HK9(EpoV;|1-qbd>2myEtalL8NF%ex1)E%3?l{Yp zA{JZDZ#h)R)+dV^9eIqj&a z2@=Vj(06e}jP|qlCZsTXHEEvh5Xx(reODQU}4B-7j0Y$V~b)l7KNBVBt6*t=bX)D;MuYj5` zPx$O^0C`x5mu|OG*;MG%nQKa26RsRga3hu`+4VCe4~{o`0i-$*r%ZoRsN~+uLGH7l zO^>yU7r`s*Tiw}>JKUY)~b8_??!%xz1%KGtt}E zYopa_EtN46&a|#Q{{5{r`3JYZZeuV;;)^J-;J>)Vd-6r_LTgzRw*>&&bP?{9I_AvI zW-nV{Z^6;uVMEs(IyS3Mrc@N0^reSBz5_|$fVtiii1aMF`qbL@Z~<~kjKco)RoUF* zJ2`)f{tIv9&->0kpGWa&r8b#yL&h$0KkPiP0>Ky_kLW7t z3Vn9~#((60GnCwgFKR{c=-WHaz^#y0m#XkP8CzD~QU-o?!>Y^4NpXUPHWi^h1z zbaUIqvfM&|FqY*?r9Jir29oGhwCQEr%!2F>5;%rJ?uoS*rqKwt#|o33QB+21Q2!6u zMgSEkL=hxB$QJfh?5!QB+9>Uqm^xE;{R@Q(2bZ0} zT}EwGaTsc4B6=2YguAzddm@tAnTSU}`099QcW=CoIt1l!-2mS6-9D8X{)e5FcRLqE zD3f<;OY4_8nt-v+SU^q9+ZW$SAutSLLEoarJ=gn+@INbm`rtn#4ho~1DSJWXGv(Hc zIZni3xtUqtL+pWae_SG$M}B?)&dN~NC3nOncz^t}{L=&fr+Xl2K0yc5 zBO}^2n3Jm@omCy}2H*$2{cwr^;q8}Fkdd)a0jLvbe2%7ZNF!mRY8Ni?zCG|_fWF*dLKn>`IN+U%-D}L4(&}*HcZ5Ql+Opz<`xfTzT_~U#&d%oqemc3zIPwp(#8Ep|!)AKKUuPOvcE(q(z2h5=HHC3mH2ylC(4E`PyxtLsm7@dvlPc~J%+3{_%$AQb`(NU`&PYtHy+GEu>qgFX-AZ3CR5&&#;mIIg&L}y? z`Nb^65v!<&$P;iW_at9HhXw5_)#SZ=>I?j8kFnkd;RfYw>Rcyh7B-FJBJcO|51-{4 z+^6v~Z{$`+DMZG#uEM*t5fO}N$<0-}BSGNYPZt}Fs0lpoiG7rX0C_ZmXS`q zJ*C~M>W^k&BiDHI<9B>b2@v#cj3uAwg4(Qiix)+i(S179N<+k)oBG0q7+$l@nI)^D z1R`m1VBiyGxAp=_KUg2{<1XlluT<34#NXdy7SgO|0BrQP*L8Xq`3l4JXBxC={0Mg#3Hn^(ynX%pFd zauTcyF508gwl;buq~AASrY?OjSX@iuF$zyvBpIC$++n-{gxyLs9}rE`Je@MawiNVO ze#y=gv4x@DD)%ZDz_KVV0OqN3#mI6saK2m28mnG-hv2DYad)&|W;qJu1+A)N$IF!| zF`?Gy{-&8TJqK4QzsD#NIw~468rmN*%81M_t!Xhz;7=G}H$?cKE(SoVQ0RD6I{lGmnwxgPkd4)G2Eri~h0o2)S z#(HmH5HhoIw7~feQ(AFrZYRa^;D|-3e0EzNnwCsqwDr;#i6ZWSnRpH>0|cqVSJHvG zFU(Lz_D!96o;u@y1UvJXmy9P(=zZ(o5<8=;3>5OmsU|DJBIkG-&|id72?wNG(I||C z2CC_<(j_B}d$Bh}j_SPBGT@?(x1Uc_d4mbVb-ES~Zh8f`)SOp(#5Q_qtbYP0Xv4q$ zIHLJQPE^*bCN7t?#rhcT2(#KJH{?ag7^Wfric%vP2$mTp|Xb9I2o?VJu#nxpth6H-P9oZhGfo*fA(1A}I_d7YS7|b8_=? eSCYRb^a`&=O`PZ(zwr`V2y@7(S&rn*?EeFGN5k&` literal 37341 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 A menu titled `Launcher configuration` should appear in the UI, and the user may change any parameter he deems convenient. -For this tutorial, we will modify the default value `radar_name` from `front_left` to `front_center`. For the `msg_type` and `transformation_type`, as `object_raw` topic is type of `radar_tracks` and the radar type is 2D in this tutorial, we keep them as default. After configuring the parameters, click `Launch`. +For this tutorial, we will modify the default value `radar_name` from `front_left` to `front_center`. After configuring the parameters, click `Launch`. ![marker_radar_lidar_calibrator](../images/marker_radar_lidar_calibrator/menu2.jpg) The following UI should be displayed. When the `Calibrate` button becomes available, click it. If it does not become available, it means that either the required `tf` or services are not available. -In this tutorial, since the `tf` are published by the provided rosbags, run the rag (`ros2 bag play radar_lidar.db3 --clock -r 0.1`) first and launch the tools afterward to trigger the `Calibrate` button. +In this tutorial, since the `tf` are published by the provided rosbag, run the rag (`ros2 bag play radar_lidar.db3 --clock -r 0.1`) first and launch the tools afterward to trigger the `Calibrate` button. ![marker_radar_lidar_calibrator](../images/marker_radar_lidar_calibrator/menu3.jpg) @@ -60,19 +60,19 @@ Once the user starts running the tutorial rosbag, the point cloud will appear in rviz1

-Once user click the button, it will show like the image below. +Once the user clicks the button, it will show like the image below.

rviz2

-Once the background is extracted, it will show like the image below. User can see that there are the `Add lidar-radar pair` button is enabled. +Once the background is extracted, it will show like the image below. The user can see that there are the `Add lidar-radar pair` button is enabled.

rviz3

-Also, following text should be shown in the console. +Also, the following text should be shown in the console. ```bash [marker_radar_lidar_calibrator]: Finished background model initialization @@ -117,19 +117,19 @@ The console should also show the following text. ### Metric plotter -The tool also provides a metric plotter for real time visualization shown in below. +The tool also provides a metric plotter for real-time visualization shown below. ![marker_radar_lidar_calibrator](../images/marker_radar_lidar_calibrator/metric_plotter1.jpg) The subplots at the top display the cross-validation errors, while the bottom subplot shows the average errors in the calibration procedure. Plotting for the average errors begins after three pairs have been collected. For the cross-validation errors, plotting starts after four pairs have been collected. -Consider the left-top subplot, which plots the cross-validation errors for distance, as an example of how these errors are calculated. When the x-axis value is 3, it indicates that we estimate the transformation using 3 samples from the 5 converged tracks. We then calculate the distance errors using the remaining 2 samples. This process is repeated for 5 choose 3 (5C3) times, which totals 10 times, and the errors are then averaged. he light blue area represents the variance of the 10 calculated distance errors. +Consider the left-top subplot, which plots the cross-validation errors for distance, as an example of how these errors are calculated. When the x-axis value is 3, it indicates that we estimate the transformation using 3 samples from the 5 converged tracks. We then calculate the distance errors using the remaining 2 samples. This process is repeated for 5 choose 3 (5C3) times, which totals 10 times, and the errors are then averaged. The light blue area represents the variance of the 10 calculated distance errors. ### Send calibration -User can click the `Send calibration` button once they are satisfied. It is recommended that user collect more pairs to increase the accuarcy. Therefore, in this tutorial, we will add all of the pairs in the rosbag. Additional, user can also stop the calibration when the line in the cross validation error is converged. +The user can click the `Send calibration` button once the user is satisfied. It is recommended that the user collect more pairs to increase the accuracy. Therefore, in this tutorial, we will add all of the pairs in the rosbag. Additionally, the user can also stop the calibration when the line in the cross-validation error is converged. -Once the `Send calibration` button are clicked, the result will be sent to the sensor calibration manager. No pairs can be added or deleted afterward like the image shown below. Please make sure you want to end the calibration process when you click the button. +Once the `Send calibration` button is clicked, the result will be sent to the sensor calibration manager. No pairs can be added or deleted afterward like the image shown below. Please make sure you want to end the calibration process when you click the button. @@ -144,10 +144,10 @@ Once the `Send calibration` button are clicked, the result will be sent to the s ## Results -After the calibration process is finished, the sensor_calibration_manager will display the results in the tf tree and allow user to save the calibration data to a file. +After the calibration process is finished, the sensor_calibration_manager will display the results in the tf tree and allow the user to save the calibration data to a file.

menu4

-To evaluate the calibration result, user can measure the calibrated radar points (green) are closer than the initial radar points (red) to the lidar points. +To evaluate the calibration result, the user can measure that the calibrated radar points (green) are closer than the initial radar points (red) to the lidar points. diff --git a/sensor/docs/tutorials/tag_based_pnp_calibrator.md b/sensor/docs/tutorials/tag_based_pnp_calibrator.md index 7ad1bcb5..87a04771 100644 --- a/sensor/docs/tutorials/tag_based_pnp_calibrator.md +++ b/sensor/docs/tutorials/tag_based_pnp_calibrator.md @@ -1,6 +1,6 @@ # tag_based_pnp_calibrator -In this tutorial, we will present a hands-on tutorial of the `tag_based_pnp_calibrator`. Although we provide pre-recorded rosbags, the flow of the tutorial is meant to show the user the steps they must perform in their own use cases with live sensors. +In this tutorial, we will present a hands-on tutorial of the `tag_based_pnp_calibrator`. Although we provide pre-recorded rosbag, the flow of the tutorial is meant to show the user the steps they must perform in their own use cases with live sensors. General documentation regarding this calibrator can be found [here](../../tag_based_pnp_calibrator/README.md). @@ -51,37 +51,37 @@ For this tutorial, we will modify the default values `calibration_pairs` from `9 The following UI should be displayed. When the `Calibrate` button becomes available, click it. If it does not become available, it means that either the required `tf` or services are not available. -In this tutorial, since the `tf` are published by the provided rosbags, run the rag (`ros2 bag play camera_lidar.db3 --clock -r 0.1`) first and launch the tools afterward to trigger the `Calibrate` button. +In this tutorial, since the `tf` are published by the provided rosbag, run the rag (`ros2 bag play camera_lidar.db3 --clock -r 0.1`) first and launch the tools afterward to trigger the `Calibrate` button. ![segment](../images/tag_based_pnp_calibrator/menu3.jpg) ## Calibration -The calibration start automatically after click the `Calibrate` button. It will keep calibrate the LidarTag detections and AprilTag detections until the number of the detections fit the user defined `calibration_pairs` in the `Launcher configuration`. +The calibration starts automatically after clicking the `Calibrate` button. It will keep calibrating the LidarTag detections and AprilTag detections until the number of the detections fits the user-defined `calibration_pairs` in the `Launcher configuration`. When user start the calibration, `rviz` and the `image view` should be displayed like below. ![segment](../images/tag_based_pnp_calibrator/visualization1.jpg) -After the tools detect the LidarTag and AprilTag, it will shows the detection markers on the `rviz` and the `image view`. The text in the rviz will also display the current number of pairs of lidar detections and AprilTag detections. +After the tools detect the LidarTag and AprilTag, it will show the detection markers on the `rviz` and the `image view`. The text in the rviz will also display the current number of pairs of lidar detections and AprilTag detections. ![segment](../images/tag_based_pnp_calibrator/visualization2.jpg) -Once user get the converged detection, user can start moving the tag to another position. Please make sure the moving distance is larger than the `calibration_min_pair_distance` and also make sure the tag is in the view of FOV of the lidar and camera. +Once the user gets the converged detection, the user can start moving the tag to another position. Please make sure the moving distance is larger than the `calibration_min_pair_distance` and also make sure the tag is in the FOV of the lidar and camera. -In the end of the calibration, we can get 8 detection pairs which shown as below. +At the end of the calibration, we can get 8 detection pairs which are shown below. ![segment](../images/tag_based_pnp_calibrator/visualization3.jpg) ## Results -After the calibration process is finished, the sensor_calibration_manager will display the results in the tf tree and allow user to save the calibration data to a file. +After the calibration process is finished, the sensor_calibration_manager will display the results in the tf tree and allow the user to save the calibration data to a file.

menu4

-User can modify the `visualization options` in the right side of the `image view`. To compare the results, please set the `Marker size (m)` to `0.04` and set the `PC subsample factor` to `1`. +The user can modify the `visualization options` on the right side of the `image view`. To compare the results, please set the `Marker size (m)` to `0.04` and set the `PC subsample factor` to `1`.

visualization_bar diff --git a/sensor/mapping_based_calibrator/README.md b/sensor/mapping_based_calibrator/README.md index 51940473..3b08f033 100644 --- a/sensor/mapping_based_calibrator/README.md +++ b/sensor/mapping_based_calibrator/README.md @@ -4,7 +4,7 @@ A tutorial for this calibrator can be found [here](../docs/tutorials/mapping_bas ## Purpose -The package `mapping_based_calibrator` allows extrinsic calibration among lidar sensor and lidar sensor used in autonomous driving and robotics. +The package `mapping_based_calibrator` allows extrinsic calibration among lidar sensors and lidar sensors used in autonomous driving and robotics. Note: depending on how this tool is configured it can perform the following calibrations: @@ -19,7 +19,7 @@ This algorithm aims to calibrate multiple lidars by using registration algorithm #### Step 1: Mapping (using mapping lidar) -First of all, the calibrator will designate one of the lidars (as defined in the launch file) as the mapping lidar for mapping purposes. The point cloud from this lidar utilizes either the NDT or GICP algorithm to calculate the pose, and also stores the point cloud as a map for future usage. +First of all, the calibrator will designate one of the lidars (as defined in the launch file) as the mapping lidar for mapping purposes. The point cloud from this lidar utilizes either the NDT or GICP algorithm to calculate the pose and also stores the point cloud as a map for future usage. #### Step 2: Calibration data preparation (using calibration lidars) diff --git a/sensor/marker_radar_lidar_calibrator/README.md b/sensor/marker_radar_lidar_calibrator/README.md index 4d0d32ed..e9440d01 100644 --- a/sensor/marker_radar_lidar_calibrator/README.md +++ b/sensor/marker_radar_lidar_calibrator/README.md @@ -4,7 +4,7 @@ A tutorial for this calibrator can be found [here](../docs/tutorials/marker_rada ## Purpose -The package `marker_radar_lidar_calibrator` allows extrinsic calibration among radar sensor and lidar sensor used in autonomous driving and robotics. +The package `marker_radar_lidar_calibrator` allows extrinsic calibration among the radar sensor and lidar sensor used in autonomous driving and robotics. ## Inner-workings / Algorithms @@ -34,7 +34,7 @@ Additionally, we provide a metric plotter that can indicate whether the calibrat ### Diagram -Below, you can see the how the algorithm is implemented in the `marker_radar_lidar_calibrator` package. +Below, you can see how the algorithm is implemented in the `marker_radar_lidar_calibrator` package. ![marker_radar_lidar_calibrator](../docs/images/marker_radar_lidar_calibrator/marker_radar_lidar_calibrator.jpg) diff --git a/sensor/marker_radar_lidar_calibrator/src/marker_radar_lidar_calibrator.cpp b/sensor/marker_radar_lidar_calibrator/src/marker_radar_lidar_calibrator.cpp index 38f8fe14..3fa24520 100644 --- a/sensor/marker_radar_lidar_calibrator/src/marker_radar_lidar_calibrator.cpp +++ b/sensor/marker_radar_lidar_calibrator/src/marker_radar_lidar_calibrator.cpp @@ -1557,7 +1557,7 @@ void ExtrinsicReflectorBasedCalibrator::visualizationMarkers( marker.scale.y = parameters_.reflector_radius; marker.scale.z = parameters_.reflector_radius; marker.color.a = 0.6; - marker.color.r = 1.0; + marker.color.r = 0.0; marker.color.g = 0.0; marker.color.b = 1.0; lidar_detections_marker_array.markers.push_back(marker); diff --git a/sensor/tag_based_pnp_calibrator/README.md b/sensor/tag_based_pnp_calibrator/README.md index 57303b6f..94e0c226 100644 --- a/sensor/tag_based_pnp_calibrator/README.md +++ b/sensor/tag_based_pnp_calibrator/README.md @@ -4,19 +4,19 @@ A tutorial for this calibrator can be found [here](../docs/tutorials/tag_based_p ## Purpose -The package `tag_based_pnp_calibrator` allows extrinsic calibration among Camera sensor and lidar sensor used in autonomous driving and robotics. +The package `tag_based_pnp_calibrator` allows extrinsic calibration among the camera sensor and lidar sensor used in autonomous driving and robotics. ## Inner-workings / Algorithms -The `tag_based_pnp_calibrator` utilizes the PnP algorithm to calculate the transformation between the lidar and camera. To run this package, you also need to operate the `apriltag_ros` package and the `lidartag` package to calculate the transformation. +The `tag_based_pnp_calibrator` utilizes the PnP algorithm to calculate the transformation between the camera and lidar. To run this package, you also need to operate the `apriltag_ros` package and the `lidartag` package to calculate the transformation. The `apriltag_ros` package detects the AprilTag and outputs the detection results. Conversely, the `lidartag` package detects the LidarTag and outputs its detection results. -The `tag_based_pnp_calibrator` utilizes the detections from both apriltag_ros and lidartag, employing a Kalman Filter to track these detections. If the detections converge, the calibrator applies the SQPnP algorithm provided by OpenCV to estimate the transformation between the image points from AprilTag and the object points from LidarTag. +The `tag_based_pnp_calibrator` utilizes the detections from both apriltag_ros and LidarTag, employing a Kalman Filter to track these detections. If the detections converge, the calibrator applies the SQPnP algorithm provided by OpenCV to estimate the transformation between the image points from AprilTag and the object points from LidarTag. ### Diagram -Below, you can see the how the algorithm is implemented in the `tag_based_pnp_calibrator` package. +Below, you can see how the algorithm is implemented in the `tag_based_pnp_calibrator` package. ![segment](../docs/images/tag_based_pnp_calibrator/tag_based_pnp_calibrator.jpg) @@ -99,10 +99,6 @@ References/External links ## Known issues/limitations -Our version of LidarTag only supports the family `16h5` - -Our codebase only supports AprilTag detections for `36h11` - ## Pro tips/recommendations During calibration, ensure that the lidar scan covers the tag, similar to the first example shown in the image below. However, if the tag resolution is low, as in the second example, and the lidar still detects the tag, it is acceptable. The third example demonstrates a scenario where the lidar scan fails to cover the tag, resulting in the inability to detect the LidarTag. @@ -111,7 +107,7 @@ During calibration, ensure that the lidar scan covers the tag, similar to the fi lidarscan_on_tag

-Also noted that when doing the calibration, it is necessary to rotate the tag in order to face to the camera like the image shown below. +Also note that when doing the calibration, it is necessary to rotate the tag facing the camera like the image shown below.

tag_position