From 23703a998fff572503224eae026043e8c8048773 Mon Sep 17 00:00:00 2001
From: Andrea Censi <andrea@cds.caltech.edu>
Date: Mon, 24 May 2010 03:55:09 +0000
Subject: [PATCH]

---
 csm_manual.html    |  28 +++++++++++++++++++++++++++-
 csm_manual.pdf     | Bin 151747 -> 152698 bytes
 docs/embedding.txt |  21 +++++++++++++++++++--
 sm/csm/algos.h     |   2 --
 4 files changed, 46 insertions(+), 5 deletions(-)

diff --git a/csm_manual.html b/csm_manual.html
index c96d705..77bd28b 100644
--- a/csm_manual.html
+++ b/csm_manual.html
@@ -637,13 +637,39 @@ using namespace CSM;</code></pre>
 <li><code>params-&gt;laser_sens</code>: pointer of a structure of type <code>laser_data</code> representing the second scan.</li>
 
 <li><code>params-&gt;first_guess</code>: first guess (x,y,theta).</li>
+
+<li><code>use_point_to_line_distance</code>: 1 for PLICP, 0 for ICP.</li>
+
+<li><code>use_corr_tricks</code>: use the tricks described in the PLICP paper.</li>
 </ul>
 
-<p>Parameters that influence stopping:</p>
+<p>Parameters that influence stopping and restarting:</p>
 
 <ul>
 <li><code>max_iterations</code>: maximum number of iterations</li>
 
 <li><code>epsilon_xy</code>, <code>epsilon_theta</code>: stop if change below these thresholds</li>
+
+<li><code>restart*</code>: whether to add some noise and restart if the match is not satisfactory. Useful for getting out of local minima but expensive.</li>
+</ul>
+
+<p>Parameters that influence correspondence establishment:</p>
+
+<ul>
+<li><code>max_angular_correction_deg</code>, <code>max_linear_correction</code>.</li>
+
+<li><code>max_correspondence_dist</code></li>
 </ul>
+
+<p>Parameters that influence correspondence pruning:</p>
+
+<ul>
+<li><code>outliers_maxPerc</code></li>
+
+<li><code>outliers_adaptive_*</code></li>
+
+<li><code>outliers_remove_doubles</code></li>
+</ul>
+
+<p>See the file <code>&lt;csm/algos.h&gt;</code> for a description of the above parameters, and the other minor parameters.</p>
 </body></html>
diff --git a/csm_manual.pdf b/csm_manual.pdf
index 1a1dec32bb487f1b7c835433dfdfc41c5aafe70c..9701afe5ea5362037d70972280b02fab7b9692db 100644
GIT binary patch
delta 14389
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%0D<u7_#u=wlu_AlO8If4XB^Xy&X_=C5xf~rj
ztZ!FuTuRijMLFMkNwg3Yzb&B4sm&v3Ebc{z$=+}OfNdC2bhP_!2|I|;!?sO@SWh_R
z*~YB_2UfLm>!bgER?c4fv(EHA_&e$SyM{7g=Yk#yWwgu?A2kL%%kNX|1G!Hl7T$8p
zsK;hLvDoJgiBx`&ac5LExQ#EY(mTk)&`uw`T7n9VXz0m|XPkx7a=tS=Kpd|UQBCk>
z*VsW$;Tpnl)&5;lO#bw#U_ynw>c}!&smwas{2uCW+l)<Ij)=u{kffZ!sr+FKrrHIh
z%2XPZH$i7xx9;@GA0%36#T8j|Qr>ubMl|{rQWkHc;w23@apm9nUh*hxN`SpyP&>gq
zmE8%t_B~=eJSu*OZUj-1_~GjA7F}RSMCR>=h^Ysx>Ad6JsQX>9+ze>!alP-S(XcPL
zGG3-7tlQD&2{mpB*qK?(jN@L${MiHi`aQ4YN8TPSURzbo&tfZ5a=&-8=_4ynn__Wu
zM^;GV$67QnnEGWE9{sA?en?6}OyGD+WZObGzUrXyqu|?cu`99>YjtKr@e@0Djy$^z
z#~*TU-9*OXW)gFyJilPjxzG0`ru~em$L;fx-gyO&(shHsmqaG)Wu*>Dftoe|#nr;K
zRuiB01<pI^+hk;f9StxVTgF9wrVD3l-T8`dRn2G?Kktgp>p@5aTDglR1r7^-qi@%p
z0M0r&Q+@`8{ZFA7;rN?nV?&X2go#`u*X*g!?^ZXa)v8U2z8`1q?iJM=$hnS<a`m@o
zGLCLFnxGjdY9rE#M{7ziZFvU(R+U2e0|PDAlC`yF7qv`12M;+^OPMH9G8&%olZgU!
zB4y}Coxx>A+!3VX6!qDsNaFhyvjZ+A7aoEI-m{54WW6Gd>34FOY>aj%AOaX|`n0Ip
z>fO$u!CU;sbA#s!dn<!NT}!WgA6l?l6!VD#V-6+Ga`;?%F`pb-h=DpV@Ybf%19$I@
zzh7vCGYj(zy>qL2zK}Oll}N$H!OI5cgl)0|$OGE%Ui80#Yr<xD!Ff-=>r>#6Bm%S*
zRYei;G?|a!-Yg76-I`qV<~pv~U?F&7NY^a)jpiDVY;@iuIF};#)J19+dbmNnZE<xO
zdqRn0c(h#-;#URVUosB?ikV?liUQM=p_0M-(PZ}BC>2K^mOEI`uZn$b?$O7SVspKR
z1TpNoReD&8{C3{;p!-SwdC@2a*)`^VF;N{GnbcV*&|7$8CuQgpUHRp`RQBvp&^x~4
zwEkD@b0p|lMB`UaN6fm8NtY{LzQ&$8)NHQ=g;~(FSvL3>W2(#j0d5*|xah<j+vn1t
z64uC0+U2TD;<&!q+F2tP>cdZi#5uvuU$$(6toJhIHXS%A8inIp3-;CZ<xb$12nfFl
zmC2k-?sVn7=n}KgdY-S-4c%1PAQ3L9-#_DzQ?oJJoz1f`8^T#kyJ58GxARI}mWBz~
z>Ay)XxVzIM!f#YH1{U$YeiC42ea%MqrD4g4DvKC}!;hR_MzcEPvBXFPv__Eo?gKZO
zw#8B$&MH`sbxKd*d$U4GqDrA^gK(o0^woaqliZ`+n3;Sfh?Fc5y-}zK(@1X{aUaWi
z)iYntZEa#<uIzR5xP&hLegi0<VrdJS?H78<buB8POtkyN4gBP5)YG@5e556#lMN<+
zK^#NzN~_ACXY@+AK1XlO(VdyrlfyYv$ts}A2JRJG*B`?C8-0<s>16Q?^Ft6tE7dY{
zdNGB#bHXKIKAl2RaX(O^p(*S#@SED)YRLhwP<rZu?=+;7;5(-an=+yR-pBrdfGJ{x
zxXHjCOopppz*=JsNSx}#v=9S@Ahhe~qLX@wQWafXJMSrMc~<lo$?_yYCHMsMHz6gZ
z!f-<6F!80rr-p2|&FGjcvkseAB|Ol^ou5Z(*Ih!1;hv5#0(7C7(8CQZgRSMfCV^G`
z?6A}0XE$mo->5y!jr_Td4@{r)hTgY6|E}1mlO?lF1)AiEL()*<;-oWc^1;G`U{CRi
zAWu<O5xic9d7nPtV*8lm1ok2EG70uPSKX9DTGwdE^v59LjJp+04WY^XrLt2{gL?Nq
zB)Mkrjd(+0sLfcLOHxYIbe+0LRUzv!G}6}1cf%!4HfZNA&+1o}1@6-;Qs0DhVg|y{
zX(nS3uIgvkP<q?%a@&v3sIj$THVIQ(FH`io;Mq}>wKb(R)l*`+;J;#gaCR|uvUIlQ
zG)j3!L11Y#?uM6pi}`;uSS94u)KUV_5eOQ`F%iHFj64tsH#>-z5d>mn#^98<H<A3{
zVoJj#$<GA>gFrl7++3i4QW_b!5Y`b9AY3WyJO~6S6i@_w5(qbphX(Y|hsKTu<DYLZ
zHv|UdPLYNp@F78<yu2xaPy~7;2p9xQDS;x$A@Oj-xEt@F2p~ix2oE=JBL_bM0Xz~9
z7Z0dWS^yyv8HooBf;R4oBGmnf@_=|!vc(aOkRW_uSYxyVLM{pkjEe{S-;f|47>JK6
zMOqet9)N*ikbgbphWthHPX&aR>tA_LF7Cf#P!QK2Y5(Z@UxA=MF|NPQgMxUup?~s#
z|4!uPf&E<!27~`~Aea~OHyJ1w*T2Z{{^|DL1bHF6|2ctw@Iil?0p|J}n2!qr{kt<T
zJ_tA8Uj$)%FrL52{4oLaKSBP1_!EPH{~`khaRFeiztsH+azl9k8w3pcGtYm4@PHtH
z9|-1w@%~*4hC;x982}81fx-W@|DXQ<uMxp8Zl1r3xw-%N?=LdkJW%joodN%e@%>GP
zn}?6*Z*kmE5Z`~+{?mUjH<X+2Z*|;I=-(sxlgG#Nmyy8Sydb`Rf$(yJ{*Su<5Xa5S
z!~J&`xOsU2$iLL_!ubA`_{Sjs0_KDKyO!?{!@s-52jlveI2f4c{}ROcf9?O{RX)BH
zaRmeh;C~+ezh{s??)h6K1jNn#_rVYl5AWY&fc*I{{@;TBte3xU5EugH`kyNf{0A@?
z0{hGHe-e4Q{&R-^j1U5b@%$^s1qT1^C&(Xj|BEyi59GfH{xJm@!o>^umtrp1zl*uS
z-2YO{&HeXM14Fp~?AE_V1L6L!UGPW8A6#x282H;05C{nJFLe+w^k1EUaPj>+1_Ay1
zJf8ov{r&*{@9l#?czFK@1N%RM&_9csRtZ7uy%gxrwUY#MaY^%uiGltYO#&t+$p!gy
u0mML(Fg`J18o~eH6nz?DVGL)N4^A!~PNrrU;6DzAK`~yxmQs|)`2PUt&L9W?

delta 13377
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

diff --git a/docs/embedding.txt b/docs/embedding.txt
index d332916..b647c28 100644
--- a/docs/embedding.txt
+++ b/docs/embedding.txt
@@ -100,13 +100,30 @@ We now briefly discuss the main parameters.
 * ``params->laser_sens``:  pointer of a structure of type ``laser_data`` representing
    the second scan.
 * ``params->first_guess``: first guess (x,y,theta).
+* ``use_point_to_line_distance``: 1 for PLICP, 0 for ICP.
+* ``use_corr_tricks``: use the tricks described in the PLICP paper.
 
-
-Parameters that influence stopping:
+Parameters that influence stopping and restarting:
 
 * ``max_iterations``: maximum number of iterations
 * ``epsilon_xy``, ``epsilon_theta``: stop if change below these thresholds
+* ``restart*``: whether to add some noise and restart if the match
+  is not satisfactory. Useful for getting out of local minima but
+  expensive.
+
+Parameters that influence correspondence establishment:
+
+* ``max_angular_correction_deg``, ``max_linear_correction``.
+* ``max_correspondence_dist``
+
+Parameters that influence correspondence pruning:
+
+* ``outliers_maxPerc``
+* ``outliers_adaptive_*``
+* ``outliers_remove_doubles``
 
+See the file ``<csm/algos.h>`` for a description of the above parameters,
+and the other minor parameters.
 
 
 
diff --git a/sm/csm/algos.h b/sm/csm/algos.h
index 59a8042..da28d14 100644
--- a/sm/csm/algos.h
+++ b/sm/csm/algos.h
@@ -9,7 +9,6 @@
 #include "laser_data.h"
 
 
-
 struct sm_params {
 	/** First scan ("ref"erence scan) */
 	LDP laser_ref;
@@ -111,7 +110,6 @@ struct sm_params {
 	/** Noise in the scan */
 	double sigma;
 
-
 	/** mark as invalid ( = don't use ) rays outside of this interval */
 	double min_reading, max_reading;
 	
-- 
GitLab