ROS與navigation教程——ACML參數配置

<launch>
<!--//后為wiki官網的參數說明
()中為粗讀算法參數說明及理解
×××面臨的問題常用地圖有2種:1.基于特征,僅指明在指定位置(地圖中包含的對象的位置)的環境的形狀。特征表示使得調節對象的位置變得簡單,作為附加的檢測結果。這樣的地圖在地圖構建領域很受歡迎。2.基于位置,這樣的地圖是有體積的,它們為環境中的許多位置都提供標簽。不僅包括環境物體的信息,也包括了對象沒有物體的信息(如空閑空間),比較經典的占用柵格地圖就是基于位置的。根據官網信息,amcl采用的是結合自適應(增強蒙特卡洛Augmented_MCL)和庫爾貝克-萊不勒散度采樣KLD_Sampling_MCL(蒙特卡洛定位的一個變種)。1.KLD_Sampling_MCL隨時間改變粒子數,改良了度過初期后的蒙特卡洛大樣本集合的資源浪費。兩個kld_配置參數就是KLD的參數。對于每次粒子濾波迭代,KLD采樣以概率1-δ確定樣本數(1-δ就是kld_z配置參數),使得真實的后驗與基于采樣的近似之間的誤差小于ε(ε就是kld_err配置參數).kld_z=0.99,kld_err=0.05,直方圖位大小為15cm*15cm*15°就能取得良好的結果。2.Augmented_MCL解決的是從機器人綁架或全局定位失效中恢復的問題。兩個recovery_alpha_配置參數就是用于失效恢復的。隨機采樣以max{0.0,1.0-w(fast)/w(slow)}概率增加。如果短期似然劣于長期似然則增加隨機采樣,這種方法,測量似然的一個突然衰減將引起隨機采樣的數目增加。w=w+α(Wavg-w)--Wavg當前測量模型的權重,w為短期(w(fast))或長期(w(slow))平滑估計,α為與w對應的recovery_alpha_參數。--><node pkg="amcl" type="amcl" name="amcl" output="screen"><!-- Publish scans from best pose at a max of 10 Hz -->//全部濾波器參數<param name="min_particles" value="500"/> ? //允許的粒子數量的最小值,默認100<param name="max_particles" value="5000"/> //允許的例子數量的最大值,默認5000<param name="kld_err" value="0.05"/> ? ?//真實分布和估計分布之間的最大誤差,默認0.01<param name="kld_z" value="0.99"/> ? //上標準分位數(1-p),其中p是估計分布上誤差小于kld_err的概率,默認0.99<param name="update_min_d" value="0.2"/> ? //在執行濾波更新前平移運動的距離,默認0.2m(對于里程計模型有影響,模型中根據運動和地圖求最終位姿的釋然時丟棄了路徑中的相關所有信息,已知的只有最終位姿,為了規避不合理的穿過障礙物后的非零似然,這個值建議不大于機器人半徑。否則因更新頻率的不同可能產生完全不同的結果)<param name="update_min_a" value="0.5"/> ? //執行濾波更新前旋轉的角度,默認pi/6 rad<param name="resample_interval" value="1"/> ? //在重采樣前需要的濾波更新的次數,默認2<param name="transform_tolerance" value="0.1"/> ?//tf變換發布推遲的時間,為了說明tf變換在未來時間內是可用的<param name="recovery_alpha_slow" value="0.0"/> //慢速的平均權重濾波的指數衰減頻率,用作決定什么時候通過增加隨機位姿來recover,默認0(disable),可能0.001是一個不錯的值<param name="recovery_alpha_fast" value="0.0"/> ?//快速的平均權重濾波的指數衰減頻率,用作決定什么時候通過增加隨機位姿來recover,默認0(disable),可能0.1是個不錯的值<param name="gui_publish_rate" value="10.0"/> ?//掃描和路徑發布到可視化軟件的最大頻率,設置參數為-1.0意為失能此功能,默認-1.0<param name="save_pose_rate" value="0.5"/> ?//存儲上一次估計的位姿和協方差到參數服務器的最大速率。被保存的位姿將會用在連續的運動上來初始化濾波器。-1.0失能。<param name="use_map_topic" value="false"/> ?//當設置為true時,AMCL將會訂閱map話題,而不是調用服務返回地圖。也就是說,當設置為true時,有另外一個節點實時的發布map話題,也就是機器人在實時的進行地圖構建,并供給amcl話題使用;當設置為false時,通過map server,也就是調用已經構建完成的地圖。在navigation 1.4.2中新加入的參數。<param name="first_map_only" value="false"/> ?//當設置為true時,AMCL將僅僅使用訂閱的第一個地圖,而不是每次接收到新的時更新為一個新的地圖,在navigation 1.4.2中新加入的參數。//激光模型參數<param name="laser_min_range" value="-1.0"/> ?//被考慮的最小掃描范圍;參數設置為-1.0時,將會使用激光上報的最小掃描范圍<param name="laser_max_range" value="-1.0"/> ?//被考慮的最大掃描范圍;參數設置為-1.0時,將會使用激光上報的最大掃描范圍<param name="laser_max_beams" value="30"/> ? //更新濾波器時,每次掃描中多少個等間距的光束被使用(減小計算量,測距掃描中相鄰波束往往不是獨立的可以減小噪聲影響,太小也會造成信息量少定位不準)
<!--
這4個laser_z參數,在動態環境下的定位時用于異常值去除技術(還有一種狀態增廣技術-將隱藏狀態包含進狀態估計,缺點是計算復雜,acml定位未使用這種定位)
這種定位思想是環境中的動態物體總是會獲得比靜態地圖障礙物更短的讀數(人在障礙物后面是掃描不到的-假如不考慮體積,比如單個激光光束不用考慮體積),利用這樣的不對稱性去除異常值
缺點是:在其他可改變環境的其他類型情景(如去除障礙物)時,這樣的非對稱性可能不存在,但相同概率分析通常是可適用的。因為每一個異常值都被舍棄了,缺少對稱性的缺點可能是從全局定位失效中恢復變得不可能。這種情況下,×××強加額外約束(如限制部分可能已被破壞的測量值)是有意義的(×××怎么約束)。(這里說的舍棄與likelihood_field模型的舍棄有區別,這里定位是先計算測量值對應非預期物體的概率(意外對象概率/混合概率)大于用戶設定的閥值(amcl配置參數里貌似沒有這個?)舍棄,而似然域概率是舍棄的超出最大測量范圍的值,不計算概率。)
(針對這個缺點不想改代碼的粗暴又好用省心的處理方式可能是構圖的時候將可移動的障礙物搬走,還有更直接的辦法就是PS)
最后,概率由這4個權重乘他們對應的概率然后相加,算法中4個權重相加等于1(這里默認值不等于1,估計做了歸一化)。
這6個laser_參數可以用learn_intrinsic_parameters算法計算,該算法是期望值極大化算法,是估計極大似然參數的迭代過程。(×××好吧,amcl好像并沒有做這個工作)
--><param name="laser_z_hit" value="0.5"/> //模型的z_hit部分的混合權值,默認0.95(混合權重1.具有局部測量噪聲的正確范圍--以測量距離近似真實距離為均值,其后laser_sigma_hit為標準偏差的高斯分布的權重)<param name="laser_z_short" value="0.05"/> //模型的z_short部分的混合權值,默認0.1(混合權重2.意外對象權重(類似于一元指數關于y軸對稱0~測量距離(非最大距離)的部分:--ηλe^(-λz),其余部分為0,其中η為歸一化參數,λ為laser_lambda_short,z為t時刻的一個獨立測量值(一個測距值,測距傳感器一次測量通常產生一系列的測量值)),動態的環境,如人或移動物體)<param name="laser_z_max" value="0.05"/> //模型的z_max部分的混合權值,默認0.05(混合權重3.測量失敗權重(最大距離時為1,其余為0),如聲吶鏡面反射,激光黑色吸光對象或強光下的測量,最典型的是超出最大距離)<param name="laser_z_rand" value="0.5"/> //模型的z_rand部分的混合權值,默認0.05(混合權重4.隨機測量權重--均勻分布(1平均分布到0~最大測量范圍),完全無法解釋的測量,如聲吶的多次反射,傳感器串擾)<param name="laser_sigma_hit" value="0.2"/> //被用在模型的z_hit部分的高斯模型的標準差,默認0.2m<param name="laser_lambda_short" value="0.1"/> //模型z_short部分的指數衰減參數,默認0.1(根據ηλe^(-λz),λ越大隨距離增大意外對象概率衰減越快)<param name="laser_likelihood_max_dist" value="2.0"/> //地圖上做障礙物膨脹的最大距離,用作likelihood_field模型(likelihood_field_range_finder_model只描述了最近障礙物的距離,(目前理解應該是在這個距離內的障礙物膨脹處理,但是算法里又沒有提到膨脹,不明確是什么意思).這里算法用到上面的laser_sigma_hit。似然域計算測量概率的算法是將t時刻的各個測量(舍去達到最大測量范圍的測量值)的概率相乘,單個測量概率:Zh * prob(dist,σ) +avg,Zh為laser_z_hit,avg為均勻分布概率,dist最近障礙物的距離,prob為0為中心標準方差為σ(laser_sigma_hit)的高斯分布的距離概率)<param name="laser_model_type" value="likelihood_field"/> //模型使用,可以是beam, likehood_field, likehood_field_prob(和likehood_field一樣但是融合了beamskip特征--官網的注釋),默認是“likehood_field”?//里程計模型參數<!--×××里程計模型并沒有涉及機器人漂移或打滑的情況,一旦出現這樣的情況,后續定位基本廢了,雖然Augmented_MCL有失效恢復,但是實際運行中耗時太長且結果不太理想(位置居然跳,這很不合理,可能參數配置不太好)--><param name="odom_model_type" value="diff"/> //模型使用,可以是"diff", "omni", "diff-corrected", "omni-corrected",后面兩 ?個是對老版本里程計模型的矯正,相應的里程計參數需要做一定的減小<param name="odom_alpha1" value="0.2"/> //指定由機器人運動部分的旋轉分量估計的里程計旋轉的期望噪聲,默認0.2(旋轉存在旋轉噪聲)<param name="odom_alpha2" value="0.2"/> //制定由機器人運動部分的平移分量估計的里程計旋轉的期望噪聲,默認0.2(旋轉中可能出現平移噪聲)<!-- translation std dev, m --><param name="odom_alpha3" value="0.8"/> //指定由機器人運動部分的平移分量估計的里程計平移的期望噪聲,默認0.2(類似上)<param name="odom_alpha4" value="0.2"/> //指定由機器人運動部分的旋轉分量估計的里程計平移的期望噪聲,默認0.2(類似上)<param name="odom_alpha5" value="0.1"/> //平移相關的噪聲參數(僅用于模型是“omni”的情況--wiki官網的注釋)<param name="odom_frame_id" value="odom"/> ?//里程計默認使用的坐標系<param name="base_frame_id" value="base_link"/> ?//用作機器人的基坐標系<param name="global_frame_id" value="map"/> ?//由定位系統發布的坐標系名稱<param name="tf_broadcast" value="true"/> ?//設置為false阻止amcl發布全局坐標系和里程計坐標系之間的tf變換//機器人初始化數據設置<param name="initial_pose_x" value="0.0"/> //初始位姿均值(x),用于初始化高斯分布濾波器。(initial_pose_參數決定撒出去的初始位姿粒子集范圍中心)<param name="initial_pose_y" value="0.0"/> //初始位姿均值(y),用于初始化高斯分布濾波器。(同上)<param name="initial_pose_a" value="0.0"/> //初始位姿均值(yaw),用于初始化高斯分布濾波器。(粒子朝向)<param name="initial_cov_xx" value="0.5*0.5"/> //初始位姿協方差(x*x),用于初始化高斯分布濾波器。(initial_cov_參數決定初始粒子集的范圍)<param name="initial_cov_yy" value="0.5*0.5"/> //初始位姿協方差(y*y),用于初始化高斯分布濾波器。(同上)<param name="initial_cov_aa" value="(π/12)*(π/12)"/> //初始位姿協方差(yaw*yaw),用于初始化高斯分布濾波器。(粒子朝向的偏差)</node>
</launch>

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253901.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253901.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253901.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【設計模式】單例模式 Singleton Pattern

通常我們在寫程序的時候會碰到一個類只允許在整個系統中只存在一個實例&#xff08;Instance&#xff09; 的情況&#xff0c; 比如說我們想做一計數器&#xff0c;統計某些接口調用的次數&#xff0c;通常我們的數據庫連接也是只期望有一個實例。Windows系統的系統任務管理器…

修改輸入框placeholder的默認樣式

一般網頁中都用到input的placeholder屬性&#xff0c;想讓這個默認樣式和網頁保持一致&#xff0c;就需要重新設定樣式&#xff0c;百度百度&#xff1a; :-moz-placeholder { / color: #000; opacity:1; }支持/* Mozilla Firefox 4 to 18 * ::-moz-placeholder { color: #000;…

進程及線程通信總結

上文我們介紹了如何建立一個簡單的多線程程序&#xff0c;多線程之間不可避免的需要進行通信 。相比于進程間通信來說&#xff0c;線程間通信無疑是相對比較簡單的。 首先我們來看看最簡單的方法&#xff0c;那就是使用全局變量&#xff08;靜態變量也可以&#xff09;來進行通…

ROS multi-master——multimaster_fkie配置

多主站ROS配置和mutimaster_fkie ROS版本&#xff1a;kinetic 操作系統&#xff1a;Ubuntu 16.04。 multimaster_fkie&#xff1a;github 1網絡配置 1.1路由器 設置無線路由器并連接兩臺計算機/機器人。為這兩臺計算機設置靜態IP地址。相互測試ping命令和ssh。 1.2主機 …

Docker入門

1. Docker簡介: docker是一個基于LXC的高級容器引擎。簡單地說&#xff0c;docker是一個輕量級的虛擬解決方案&#xff0c;或者說它是一個超輕量級的虛擬機&#xff08;容器&#xff09;。 Docker是一個開源的引擎&#xff0c;可以輕松的為任何應用創建一個輕量級的、可移植的、…

樂器庫的混合

每臺微機一個聲卡&#xff0c;也就是一片D/A&#xff0c;驅動按波特率、采樣位數、采樣通道傳輸給D/A&#xff0c;輸出模擬音頻。播放時僅一種與硬件支持格式對應&#xff0c;其他需驅動&#xff08;有損&#xff09;變換到硬件支持格式。每個應用都可單獨播放聲音&#xff0c;…

kafka認知--(1)

文檔參考&#xff1a;http://kafka.apache.org/documentation.html 下載代碼&#xff1a; tar -xzf kafka_2.11-0.11.0.0.tgz cd kafka_2.11-0.11.0.0 啟動 bin/zookeeper-server-start.sh config/zookeeper.properties 創建topic&#xff08;主題為test&#xff0c;只有一個分…

帶頭尾指針的list的C實現

一、緣起 很早寫了一個帶頭尾指針的list&#xff0c;該list支持從尾部插入元素&#xff0c;在任意位置刪除元素&#xff0c;最近用這個list時發現一個bug&#xff0c;修正了&#xff0c;并加了幾個接口函數。貼出來&#xff0c;希望對C的初學者有用。 二、基本說明 2.1、數據結…

Gmapping——從原理到實踐

概述 在SLAM中&#xff0c;機器人位姿和地圖都是狀態變量&#xff0c;我們需要同時對這兩個狀態變量進行估計&#xff0c;即機器人獲得一張環境地圖的同時確定自己相對于該地圖的位置。我們用x表示機器人狀態&#xff0c;m表示環境地圖&#xff0c;z表示傳感器觀測情況&#xf…

關于git分支

1.關于git分支 git的“分支”乍一聽是一個特別容易讓人產生錯覺的概念&#xff0c;以為它和樹枝一樣是分叉的枝節&#xff0c;其實Git中的分支本質上是個指向commit對象的指針,每次commit&#xff0c;git都把它們串成一條時間線&#xff0c;這條時間線就是一個分支。 2.直接切換…

【機器學習經典算法源碼分析系列】-- 邏輯回歸

1.邏輯回歸&#xff08;Logistic Regression&#xff09;又常被成為“邏輯斯蒂回歸”&#xff0c;實質上是一個二元分類問題。 邏輯回歸代價函數&#xff1a; 代價函數導數&#xff1a; Matlab實現&#xff1a; 采用matlab中自帶的無約束最小化函數fminunc來代替梯度下降法&…

求特殊自然數

總時間限制: 1000ms 內存限制: 65536kB 描述一個十進制自然數,它的七進制與九進制表示都是三位數&#xff0c;且七進制與九進制的三位數碼表示順序正好相反。編程求此自然數,并輸出顯示。 輸入無。輸出三行&#xff1a;第一行是此自然數的十進制表示&#xff1b;第一行是此自然…

ROS——不同版本間ROS進行通信

在相同版本間的ROS進行通信不在贅述了&#xff0c;修改/etc/hosts文件即可。 最近項目遇到在Ubuntu16.04 與Ubuntu18.04兩個系統間進行ROS通信&#xff0c;ROS版本分別為Kinetic和Melodic。配置網絡后&#xff0c;兩邊都能夠ping通&#xff0c;但是在獲取ros數據是&#xff0c…

大數據開發實戰:數據流圖及相關數據技術

1、大數據流程圖 2、大數據各個環節主要技術 2.1、數據處理主要技術 Sqoop&#xff1a;&#xff08;發音&#xff1a;skup&#xff09;作為一款開源的離線數據傳輸工具&#xff0c;主要用于Hadoop(Hive) 與傳統數據庫&#xff08;MySql,PostgreSQL&#xff09;間的數據傳遞。它…

oracle 中時間類型 date 與 long 互轉

我們在保存時間到數據庫時&#xff0c;有時候會保存long型的數據&#xff0c;固定長度是13位&#xff0c;是用當前時間減去1970-01-01&#xff0c;再換算成毫秒得到的結果。 但是要考慮到時區問題中國的時區時8區所以時間要加上8小時 oracle中的實現方式&#xff1a; ---------…

Linux對包管理闡述

Centos/Redhat/Fedora的軟件包&#xff0c;都是rpm后綴的文件。包管理器rpm(Redhat packages manager) linux的哲學思想是簡單命令解決復雜任務&#xff0c;因此每個軟件的功能較單一&#xff0c;所以各種包之間有著復雜的依賴關系&#xff0c;為了解決這種可以使用前端工具&am…

跨時鐘域電路設計——亞穩態及雙鎖存器

一、同步電路 定義&#xff1a;電路中所有受時鐘控制的單元&#xff0c;全部由一個統一的時鐘控制。 優點&#xff1a;在同步設計中&#xff0c;EDA工具可以保證電路系統的時序收斂&#xff0c;避免電路設計中的競爭冒險。 缺點&#xff1a;時鐘樹綜合需要加入大量延遲單元&…

linux setsockopt詳解

1.closesocket&#xff08;一般不會立即關閉而經歷TIME_WAIT的過程&#xff09;后想繼續重用該socket&#xff1a; BOOL bReuseaddrTRUE; setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL)); 2. 如果要已經處于連接狀態的soket在調用closes…

[TOOLS] 移動端調試進行時 - whistle

1、本地安裝、啟動whistle 安裝實操請查看官方文檔不贅述 復制代碼 2、手機設置代理 實操請查看官方文檔 !!!注意&#xff1a;代理ip填寫whistle右上角online選項中的ip 復制代碼 3、whistle上設置對應rules、weinre whistle設置代理(!!!注意支持tunnel協議)&#xff1a; rules…

函數動態參數實現format

變量賦值一種是字符串格式化&#xff0c;一種是通過format的方式 1.字符串格式化 s"i am %s,age %d"%(Jasper,23)print(s)打印輸出&#xff1a;i am Jasper,age 232.format格式化 s"i am {name},age {age}".format(namejasper,age23)print(s)或 s2"i …