機(jī)器人操作系統(tǒng)(ROS)課件10.4 機(jī)器人SLAM及自主導(dǎo)航_第1頁(yè)
機(jī)器人操作系統(tǒng)(ROS)課件10.4 機(jī)器人SLAM及自主導(dǎo)航_第2頁(yè)
機(jī)器人操作系統(tǒng)(ROS)課件10.4 機(jī)器人SLAM及自主導(dǎo)航_第3頁(yè)
機(jī)器人操作系統(tǒng)(ROS)課件10.4 機(jī)器人SLAM及自主導(dǎo)航_第4頁(yè)
機(jī)器人操作系統(tǒng)(ROS)課件10.4 機(jī)器人SLAM及自主導(dǎo)航_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

機(jī)器人操作系統(tǒng)(ROS)機(jī)器人操作系統(tǒng)(ROS)機(jī)器人SLAM及自主導(dǎo)航10.4機(jī)器人操作系統(tǒng)(ROS)10.4機(jī)器人SLAM及自主導(dǎo)航

根據(jù)機(jī)器人所使用的傳感器不同,可以將SLAM(SimultaneousLocalizationandMapping,同步定位與建圖)分為激光SLAM和視覺(jué)SLAM。激光SLAM是使用激光雷達(dá)進(jìn)行環(huán)境感知進(jìn)而定位建圖;視覺(jué)SLAM通過(guò)視覺(jué)傳感器進(jìn)行定位建圖。本章我們將使用單線激光雷達(dá)實(shí)現(xiàn)環(huán)境地圖的構(gòu)建,并在已構(gòu)建完成的地圖中實(shí)現(xiàn)自主導(dǎo)航。自主導(dǎo)航機(jī)器人操作系統(tǒng)(ROS)10.4.1使用gmapping構(gòu)建地圖gmapping原理gmapping算法是基于RBPF(Rao-BlackwellisedParticleFilter)的激光2DSLAM算法。該算法將機(jī)器人的里程計(jì)位姿信息和激光雷達(dá)的點(diǎn)云數(shù)據(jù)進(jìn)行結(jié)合。RBPFSLAM的核心是通過(guò)激光雷達(dá)感知環(huán)境信息,并在RBPF的基礎(chǔ)上引入了改進(jìn)的建議分布(Proposaldistribution)和自適應(yīng)重采樣技術(shù),在估計(jì)粒子分布時(shí),同時(shí)考慮里程計(jì)位姿信息和最新的激光雷達(dá)觀測(cè)值,從而一定程度上減少了粒子數(shù)目和計(jì)算量,保證了建圖的準(zhǔn)確性,有效改善了RBPF的粒子耗散和計(jì)算量大的劣勢(shì)。gmapping算法流程圖機(jī)器人操作系統(tǒng)(ROS)10.4.1使用gmapping構(gòu)建地圖gmapping原理當(dāng)節(jié)點(diǎn)獲取到激光雷達(dá)和里程計(jì)的數(shù)據(jù)時(shí),將最新時(shí)刻獲取的激光雷達(dá)觀測(cè)數(shù)據(jù)與之前構(gòu)建的點(diǎn)云地圖掃描匹配,確定當(dāng)前機(jī)器人的位置。同時(shí),算法會(huì)根據(jù)匹配的程度來(lái)計(jì)算得分,若得分在設(shè)定值的范圍內(nèi),則匹配成功,采用改進(jìn)的建議分布(即觀測(cè)模型)進(jìn)行粒子采樣。若失敗,則粒子采樣使用運(yùn)動(dòng)模型x_t^((i))~p(x_t∣x_(t-1),u_t),其中x_t、x_(t-1)、u_t分別是當(dāng)前時(shí)刻的機(jī)器人位姿,上一時(shí)刻機(jī)器人位姿,當(dāng)前時(shí)刻里程計(jì)信息。通過(guò)當(dāng)前時(shí)刻里程計(jì)數(shù)據(jù)和上一時(shí)刻機(jī)器人位姿推算當(dāng)前時(shí)刻位姿并計(jì)算粒子權(quán)值。根據(jù)機(jī)器人當(dāng)前位置和已構(gòu)建的地圖,通過(guò)計(jì)算來(lái)構(gòu)建下一時(shí)刻地圖。改進(jìn)前的RBPF使用運(yùn)動(dòng)學(xué)模型作為粒子采樣的建議分布,由于方差較大,只有少數(shù)粒子符合真實(shí)分布,因此必須進(jìn)行重采樣來(lái)使粒子數(shù)符合實(shí)際分布。改進(jìn)后的建議分布在運(yùn)動(dòng)學(xué)模型的基礎(chǔ)上根據(jù)觀測(cè)值和上一時(shí)刻地圖信息對(duì)采樣的粒子進(jìn)行加權(quán),選用權(quán)重大的粒子進(jìn)而更新地圖,改進(jìn)建議分布如下式所示:機(jī)器人操作系統(tǒng)(ROS)10.4.1使用gmapping構(gòu)建地圖gmapping原理

機(jī)器人操作系統(tǒng)(ROS)10.4.1使用gmapping構(gòu)建地圖PLICP模擬里程計(jì)mapping是一個(gè)依賴?yán)锍逃?jì)的算法,除了激光掃描數(shù)據(jù),也需要有里程計(jì)信息(Odometry)輸入作為運(yùn)算的前提,比如輪式里程計(jì),視覺(jué)里程計(jì)等。laser_scan_matcher功能包是基于ROS的增量式激光掃描配準(zhǔn)工具,可以通過(guò)掃描連續(xù)的兩幀sensor_msgs/LaserScan消息之間匹配完成位姿估計(jì),并將估計(jì)完成的位姿信息以geometry_msgs/Pose2D類(lèi)型的話題進(jìn)行發(fā)布。在僅有激光雷達(dá)傳感器的情況下,該功能包可以作為單獨(dú)的里程計(jì)估計(jì)器來(lái)使用。laser_scan_matcher功能包的核心是PLICP(點(diǎn)對(duì)線迭代最近點(diǎn))掃描匹配算法。PLICP算法流程和ICP流程基本一樣,不同之處在于ICP是找最近鄰的一點(diǎn),以點(diǎn)到點(diǎn)之間的距離作為誤差,而PLICP是找到最近鄰的兩點(diǎn),兩點(diǎn)連線,是以點(diǎn)到線的距離作為誤差,因此PLICP的匹配誤差比ICP的匹配誤差要小的多。機(jī)器人操作系統(tǒng)(ROS)安裝步驟首先,運(yùn)行如下命令,安裝本次實(shí)驗(yàn)相關(guān)依賴庫(kù):$sudoapt-getinstalllibsdl1.2-dev$sudoaptinstalllibsdl-image1.2-devROS中已經(jīng)集成了gmapping相關(guān)功能包的二進(jìn)制文件,可以使用如下命令進(jìn)行安裝:$sudoapt-getinstallros-melodic-slam-gmapping下面通過(guò)源碼安裝scan_tools功能包,作用是使用激光數(shù)據(jù)為gmapping提供里程計(jì)。首先,進(jìn)入工作空間的src文件夾下:$cd~/catkin_ws/src/使用如下命令克隆源碼:$gitclone/ccny-ros-pkg/scan_tools.git10.4.1使用gmapping構(gòu)建地圖機(jī)器人操作系統(tǒng)(ROS)源碼下載完成后,運(yùn)行如下命令進(jìn)行編譯,也可將本書(shū)提供的功能包(scan_tools)拷貝至工作空間并進(jìn)行編譯:$cd~/catkin_ws/$catkin_make本次實(shí)驗(yàn)使用的激光雷達(dá)為鐳神LS01B,這是一款價(jià)格低廉的二維雷達(dá),能夠?qū)崿F(xiàn)在25米范圍內(nèi)360度的二維平面掃描。將本書(shū)配套代碼中的激光雷達(dá)驅(qū)動(dòng)功能包(ls01b_v2)復(fù)制到當(dāng)前工作空間的src文件夾下,并進(jìn)行編譯。LS01B激光雷達(dá)安裝步驟10.4.1使用gmapping構(gòu)建地圖機(jī)器人操作系統(tǒng)(ROS)如果在編譯過(guò)程中出現(xiàn)無(wú)法找到csm功能包的錯(cuò)誤時(shí),運(yùn)行如下命令安裝csm功能包,并重新編譯:$sudoapt-getinstallros-melodic-csm無(wú)法找到csm功能包10.4.1使用gmapping構(gòu)建地圖機(jī)器人操作系統(tǒng)(ROS)編譯成功后,修改scan_tools/laser_scan_matcher/demo文件夾中的demo_gmapping.launch文件,其中<paramname=“serial_port”value=“/dev/ttyUSB0”/>,ttyUSB0為激光雷達(dá)端口號(hào),讀者根據(jù)實(shí)際情況修改,修改后的文件如下(部分):<launch>##setupleishenlidar#################<nodename="ls01b_v2"pkg="ls01b_v2"type="ls01b_v2"output="screen"><paramname="scan_topic"value="scan"/><paramname="frame_id"value="laser_link"/><paramname="serial_port"value="/dev/ttyUSB0"/>……10.4.1使用gmapping構(gòu)建地圖機(jī)器人操作系統(tǒng)(ROS)配置參數(shù)講解map_udpate_interval:每次更新地圖的時(shí)間間隔(數(shù)據(jù)類(lèi)型:float,默認(rèn)值:5.0,單位:秒)。該值越小,節(jié)點(diǎn)將更頻繁的更新地圖,代價(jià)是計(jì)算負(fù)荷變大。maxUrange:激光的最大可用范圍。光束被裁剪為該值(數(shù)據(jù)類(lèi)型:float,默認(rèn)值:80.0,單位:米)。sigma:掃描匹配過(guò)程中cell的標(biāo)準(zhǔn)差(數(shù)據(jù)類(lèi)型:float,默認(rèn)值:0.05)。kernelSize:掃描匹配過(guò)程的搜索窗口大小(數(shù)據(jù)類(lèi)型:int,默認(rèn)值:1)。lstep和astep分別是掃描匹配的初始距離步長(zhǎng)和掃描匹配的初始角度步長(zhǎng)(數(shù)據(jù)類(lèi)型:float,默認(rèn)值:0.05)。iterations:掃描匹配器的迭代次數(shù)(數(shù)據(jù)類(lèi)型:int,默認(rèn)值:5)。lsigma:掃描匹配過(guò)程中單個(gè)激光掃描束的標(biāo)準(zhǔn)差(數(shù)據(jù)類(lèi)型:float,,默認(rèn)值:0.075)。ogain:似然估計(jì)時(shí)使用的增益,用于平滑重采樣效果(數(shù)據(jù)類(lèi)型:默認(rèn)值::3.0)。lskip:每個(gè)n+1次掃描進(jìn)行一次掃描匹配,取值為0時(shí)表示每次掃描之后都進(jìn)行一次匹配(數(shù)據(jù)類(lèi)型:int,默認(rèn)值:0)。srr:位置的噪聲項(xiàng)(數(shù)據(jù)類(lèi)型:float,默認(rèn)值:0.1)。srt:方位角的噪聲項(xiàng)(數(shù)據(jù)類(lèi)型:float,默認(rèn)值:0.2)。str:位置到方位角的協(xié)方差項(xiàng)(數(shù)據(jù)類(lèi)型:float,默認(rèn)值:0.1)。stt:方位角到位置的協(xié)方差項(xiàng)(數(shù)據(jù)類(lèi)型:float,默認(rèn)值:0.2)。10.4.1使用gmapping構(gòu)建地圖機(jī)器人操作系統(tǒng)(ROS)linearUpdate:只有當(dāng)機(jī)器人至少運(yùn)動(dòng)了linearUpdate的距離之后才進(jìn)行一次新的測(cè)量(數(shù)據(jù)類(lèi)型:float,默認(rèn)值:1.0)angularUpdate:只有當(dāng)機(jī)器人至少轉(zhuǎn)動(dòng)了angularUpdate的角度之后才進(jìn)行一次新的測(cè)量(數(shù)據(jù)類(lèi)型:float,默認(rèn)值:0.5)temporalUpdate:如果上次掃描處理的時(shí)間早于更新時(shí)間(秒),則處理掃描。小于零的值將關(guān)閉基于時(shí)間的更新(數(shù)據(jù)類(lèi)型:float,默認(rèn)值:-1.0)。resampleThreshold:粒子重采樣的閾值。只有當(dāng)評(píng)價(jià)粒子相似度的指標(biāo)Neff小于該閾值時(shí)才進(jìn)行重采樣,所以降低該值意味著提高重采樣的頻率(數(shù)據(jù)類(lèi)型:float,默認(rèn)值:0.5)。particles:濾波器中的粒子數(shù),粒子數(shù)越多,定位精度越高,計(jì)算代價(jià)越大(數(shù)據(jù)類(lèi)型:int,默認(rèn)值:30)。xmin、ymin、xmax和ymax分別是初始地圖大小中X的最小值(數(shù)據(jù)類(lèi)型:float,默認(rèn)值:-100.0)、Y的最小值(數(shù)據(jù)類(lèi)型:float,默認(rèn)值:-100.0)、X的最大值(數(shù)據(jù)類(lèi)型:float,默認(rèn)值:100.0)以及Y的最大值(數(shù)據(jù)類(lèi)型:float,默認(rèn)值:100.0)。delta:地圖的分辨率(數(shù)據(jù)類(lèi)型:float,默認(rèn)值:0.05)。llsamplerange:似然估計(jì)的距離采樣范圍(數(shù)據(jù)類(lèi)型:float,default:0.01)。llsamplestep似然估計(jì)的距離采樣步長(zhǎng)(數(shù)據(jù)類(lèi)型:float,默認(rèn)值:0.01)。lasamplerange:似然估計(jì)的旋轉(zhuǎn)采樣范圍。(數(shù)據(jù)類(lèi)型:float,默認(rèn)值:0.005)。lasamplestep:似然估計(jì)的旋轉(zhuǎn)采樣步長(zhǎng)(數(shù)據(jù)類(lèi)型:float,默認(rèn)值:0.005)。occ_thresh:占用概率閾值(數(shù)據(jù)類(lèi)型:float,默認(rèn)值:default:0.25)。10.4.1使用gmapping構(gòu)建地圖機(jī)器人操作系統(tǒng)(ROS)實(shí)驗(yàn)測(cè)試首先,將激光雷達(dá)接入工控機(jī),通過(guò)以下命令查看設(shè)備是否正常接入:$ls/dev若出現(xiàn)ttyUSB*(*代表0-9中的某個(gè)數(shù),本節(jié)中激光雷達(dá)的設(shè)備是dev/ttyUSB0),則激光雷達(dá)驅(qū)動(dòng)成功。通過(guò)以下命令更改相應(yīng)串口權(quán)限,允許串口進(jìn)行數(shù)據(jù)讀寫(xiě):$sudochmod777/dev/ttyUSB0運(yùn)行如下命令啟動(dòng)SLAM節(jié)點(diǎn),并移動(dòng)實(shí)驗(yàn)小車(chē)進(jìn)行地圖構(gòu)建,實(shí)驗(yàn)結(jié)果如圖。$roslaunchlaser_scan_matcherdemo_gmapping.launch實(shí)驗(yàn)結(jié)果10.4.1使用gmapping構(gòu)建地圖機(jī)器人操作系統(tǒng)(ROS)在工作空間目錄下創(chuàng)建一個(gè)map文件夾,通過(guò)如下命令保存當(dāng)前構(gòu)建的地圖,保存后的地圖如圖所示:$rosrunmap_servermap_saver-f~/catkin_ws/map/mymap保存地圖若未安裝map_server,可運(yùn)行如下命令安裝功能包:$sudo

apt-get

install

ros-melodic-map-server保存后的地圖10.4.1使用gmapping構(gòu)建地圖機(jī)器人操作系統(tǒng)(ROS)10.4.2基于地圖的定位與自主導(dǎo)航介紹導(dǎo)航框架(1)amclamcl的英文全稱是adaptiveMonteCarlolocalization,是在蒙特卡洛定位的基礎(chǔ)上,使用自適應(yīng)的KLD(kullback-leiblerdivergence)方法來(lái)更新粒子。蒙特卡洛定位使用粒子濾波的方法進(jìn)行定位,粒子濾波用通俗的話說(shuō)就是一開(kāi)始在地圖空間均勻的撒一把粒子,然后通過(guò)獲取機(jī)器人的移動(dòng)位姿來(lái)移動(dòng)粒子,比如機(jī)器人向前移動(dòng)了一米,所有的粒子也就向前移動(dòng)一米,不管現(xiàn)在這個(gè)粒子的位置對(duì)不對(duì),使用每個(gè)粒子所處位置模擬一個(gè)傳感器信息與觀察到的傳感器信息(一般是激光信息)作對(duì)比,從而賦給每個(gè)粒子一個(gè)權(quán)重。之后根據(jù)生成的權(quán)重來(lái)重新生成粒子,權(quán)重越高的生成的概率越大。這樣的迭代之后,所有的粒子會(huì)慢慢地收斂到一起,機(jī)器人在地圖上的確切位置也就被推算出來(lái)了。(2)move_basemove_base功能包的作用是將全局路徑規(guī)劃和局部路徑規(guī)劃結(jié)合,從而使機(jī)器人完成基于地圖的導(dǎo)航任務(wù)中的最優(yōu)路徑規(guī)劃,全局路徑規(guī)劃用于生成地圖上機(jī)器人的起始點(diǎn)到設(shè)置的目標(biāo)點(diǎn)的路徑,局部路徑規(guī)劃用于生成到近距離目標(biāo)和為了臨時(shí)躲避障礙物的路徑。機(jī)器人操作系統(tǒng)(ROS)ROS中的導(dǎo)航框架10.4.2基于地圖的定位與自主導(dǎo)航機(jī)器人操作系統(tǒng)(ROS)在機(jī)器人的導(dǎo)航任務(wù)中,首先,機(jī)器人需要發(fā)布必要的傳感器話題(sensortopic),消息類(lèi)型為sensor_msgs/LaserScan或sensor_msgs/PointCloud,導(dǎo)航目標(biāo)位置信息(move_base_simle/goal),消息類(lèi)型為geometry_msgs/PoseStamped。其次,要求機(jī)器人發(fā)布里程計(jì)信息及相應(yīng)的TF變換。導(dǎo)航功能包用tf功能包來(lái)確定機(jī)器人在世界坐標(biāo)系中的位置和相對(duì)于靜態(tài)地圖的相關(guān)傳感器信息,但是tf功能包不提供與機(jī)器人速度相關(guān)的任何信息,所以導(dǎo)航功能包要求里程計(jì)源程序發(fā)布一個(gè)變換和一個(gè)包含速度信息的nav_msgs/Odometry消息。最后,該導(dǎo)航功能包輸出控制機(jī)器人移動(dòng)的指令(cmd_vel),并通過(guò)geometry_msgs/Twist類(lèi)型的消息來(lái)和底層驅(qū)動(dòng)板通信,從而控制電機(jī)運(yùn)轉(zhuǎn),使機(jī)器人完成相應(yīng)的移動(dòng)。ROS中的導(dǎo)航框架10.4.2基于地圖的定位與自主導(dǎo)航機(jī)器人操作系統(tǒng)(ROS)在導(dǎo)航框架中,機(jī)器人的路徑規(guī)劃包括全局路徑規(guī)劃(globalplanner)和局部實(shí)時(shí)規(guī)劃(localplanner)。前者根據(jù)給定的目標(biāo)位置進(jìn)行總體路徑規(guī)劃,后者根據(jù)所在位置附近的障礙物進(jìn)行躲避規(guī)劃。全局路徑規(guī)劃器使用了A*算法,A*算法是一種高效的路徑搜索算法,采用啟發(fā)函數(shù)來(lái)估計(jì)地圖上機(jī)器人當(dāng)前的位置到目標(biāo)位置之間的距離,并以此選擇最優(yōu)的方向進(jìn)行搜索,如果失敗會(huì)選擇其他路徑繼續(xù)搜索直到得到最優(yōu)路徑。局部路徑實(shí)時(shí)規(guī)劃是利用base_local_plann包實(shí)現(xiàn)的,該包使用DWA(DynamicWindowapproaches,規(guī)劃推理和動(dòng)態(tài)窗口)算法,計(jì)算機(jī)器人每個(gè)周期內(nèi)應(yīng)該行駛的速度和角度(dx,dy,dthetavelocities)。DWA算法中先離散采樣機(jī)器人控制空間(dx,dy,dtheta),再對(duì)于每個(gè)采樣速度,從機(jī)器人當(dāng)前的狀態(tài),進(jìn)行模擬預(yù)測(cè)。ROS中的導(dǎo)航框架10.4.2基于地圖的定位與自主導(dǎo)航機(jī)器人操作系統(tǒng)(ROS)(3)costmap_2d代價(jià)地圖(costmap)是機(jī)器人收集傳感器信息建立和更新的二維或三維地圖。在move_base的框架下,costmap_2d為全局路徑規(guī)劃和局部路徑規(guī)劃提供了2D的代價(jià)地圖。costmap_2d使用的是占用柵格地圖,通過(guò)多個(gè)圖層描述環(huán)境信息。每個(gè)圖層描述了一種類(lèi)型的信息,最終的代價(jià)是這些圖層疊加的結(jié)果。比如說(shuō)靜態(tài)地圖層(staticmaplayer)描述的是導(dǎo)航的地圖信息,障礙物層(obstaclelayer)則記錄了環(huán)境中的障礙物,膨脹層(inflationlayer)根據(jù)用戶指定的參數(shù)和機(jī)器人的尺寸將障礙物的占用柵格區(qū)域放大一部分,以防止碰撞。根據(jù)導(dǎo)航類(lèi)型,代價(jià)地圖又被分成兩部分。一個(gè)是全局地圖(global_costmap),在全局移動(dòng)路徑規(guī)劃中以整個(gè)區(qū)域?yàn)閷?duì)象建立移動(dòng)計(jì)劃。而另一個(gè)被稱為局部地圖(local_costmap),這是在局部移動(dòng)路徑規(guī)劃中,在以機(jī)器人為中心的部分限定區(qū)域中規(guī)劃移動(dòng)路徑時(shí),或在躲避障礙物時(shí)用到的地圖。然而,盡管兩種地圖的目的不同,但表示方法是相同的。costmap用0到255之間的值來(lái)表示。簡(jiǎn)單地說(shuō),根據(jù)該值可以知道機(jī)器人是位于可移動(dòng)區(qū)域還是位于可能與障礙物碰撞的區(qū)域。000:機(jī)器人可以自由移動(dòng)的freearea(自由區(qū)域)001~127:碰撞概率低的區(qū)域128~252:碰撞概率高的區(qū)域253~254:碰撞區(qū)域255:機(jī)器人不能移動(dòng)的占用區(qū)域(occupiedarea)10.4.2基于地圖的定位與自主導(dǎo)航機(jī)器人操作系統(tǒng)(ROS)障礙距離與costmap值的關(guān)系10.4.2基于地圖的定位與自主導(dǎo)航機(jī)器人操作系統(tǒng)(ROS)10.4.3安裝步驟導(dǎo)航框架中包含amcl、move_base等很多功能包,可以通過(guò)源碼安裝,也可以使用如下命令安裝:$sudoapt-getinstallros-melodic-navigation用源碼安裝的方法如下,在工作空間的src文件夾下克隆源碼:$gitclone/ros-planning/navigation進(jìn)入navigation功能包查看版本:$cdnavigation

$gitbranch選擇melodic版本的navigation:$gitcheckoutmelodic-devel回到工作空間下進(jìn)行編譯:$cdcatkin_ws/

$catkin_make若編譯出現(xiàn)如圖所示的問(wèn)題,說(shuō)明缺少相應(yīng)功能包,運(yùn)行如下命令安裝相應(yīng)功能包:$sudoapt-getinstallros-melodic-tf2-sensor-msgs編譯報(bào)錯(cuò)機(jī)器人操作系統(tǒng)(ROS)10.4.4參數(shù)配置文件講解代價(jià)地圖配置障礙物信息通過(guò)兩種代價(jià)地圖儲(chǔ)存:一種是global_costmap,用于全局路徑規(guī)劃;一種是local_costmap,用于本地路徑規(guī)劃和實(shí)時(shí)避障。兩種代價(jià)地圖的正常使用需要三個(gè)配置文件,分別是通用配置文件(CommonConfiguration)、全局規(guī)劃配置文件(GlobalConfiguration)和局部規(guī)劃配置文件(LocalConfiguration)。1.通用配置文件obstacle_range:2.5#設(shè)置地圖中檢測(cè)障礙物的最大范圍(m)。raytrace_range:3.0#設(shè)置機(jī)器人檢測(cè)自由空間的最大范圍(m)。footprint:[[0.165,0.165],[-0.165,0.165],[-0.165,-0.165],[0.165,-0.165]]#設(shè)置機(jī)器人在地圖上的占用面積,以機(jī)器人的中心作為原點(diǎn)。若機(jī)器人外形為圓形,則設(shè)置robot_radius(圓形半徑)。這里我們?cè)O(shè)置機(jī)器人外形為矩形。#robot_radius:0.165inflation_radius:0.1#機(jī)器人的膨脹參數(shù)(m),參數(shù)為0.1表示機(jī)器人規(guī)劃的路徑應(yīng)與障礙物保持大于0.1m的安全距離。max_obstacle_height:0.6#障礙物的最大高度(m)。min_obstacle_height:0.0#障礙物的最小高度(m)。observation_sources:scan#代價(jià)地圖需要關(guān)注的傳感器信息scan:{data_type:LaserScan,topic:/scan,marking:true,clearing:true,expected_update_rate:0}#分別為傳感器的消息類(lèi)型、話題、是否使用傳感器的實(shí)時(shí)信息來(lái)添加或清除代價(jià)地圖的障礙物信息以及根據(jù)傳感器實(shí)際發(fā)布的速率為每個(gè)觀測(cè)源設(shè)置預(yù)期更新速率,當(dāng)傳感器低于預(yù)期速率時(shí),會(huì)在終端中發(fā)出警告。地圖的更新,來(lái)源于機(jī)器人發(fā)布的傳感器消息,代價(jià)地圖儲(chǔ)存由傳感器獲取的障礙物信息。配置文件名為costmap_common_params.yaml,文件內(nèi)容與解釋如下:機(jī)器人操作系統(tǒng)(ROS)全局規(guī)劃配置文件用于全局代價(jià)地圖參數(shù)的配置,配置文件名為global_costmap_params.yaml,文件內(nèi)容及解釋如下:2.全局規(guī)劃配置文件global_costmap:global_frame:/map#表示全局代價(jià)地圖在哪個(gè)坐標(biāo)系下運(yùn)行,這里選擇map參考系。robot_base_frame:/base_footprint#表示全局地圖參考的機(jī)器人坐標(biāo)系。update_frequency:1.0#設(shè)置全局地圖信息更新的頻率(HZ)。publish_frequency:1.0#設(shè)置全局地圖信息發(fā)布的頻率(HZ)。static_map:true#用來(lái)決定代價(jià)地圖是否需要根據(jù)map_server提供的地圖信息進(jìn)行初始化,若不需要已知地圖或map_server,將該參數(shù)設(shè)為false。rolling_window:false#用來(lái)設(shè)置機(jī)器人移動(dòng)過(guò)程中是否需要滾動(dòng)窗口來(lái)保持機(jī)器人處于中心位置。resolution:0.01#設(shè)置地圖分辨率(米/格)。transform_tolerance:1.0#TF變換的容忍誤差。map_type:costmap#地圖類(lèi)型,代價(jià)地圖。代價(jià)地圖配置10.4.4參數(shù)配置文件講解機(jī)器人操作系統(tǒng)(ROS)局部規(guī)劃配置文件用于局部代價(jià)地圖參數(shù)的配置,配置文件名為local_costmap_params.yaml,文件內(nèi)容及解釋如下:3.局部規(guī)劃配置文件local_costmap:#參數(shù)含義與全局規(guī)劃配置文件中的相同

global_frame:/odomrobot_base_frame:/base_footprintupdate_frequency:3.0publish_frequency:1.0static_map:falserolling_window:truewidth:6.0#設(shè)置代價(jià)地圖的長(zhǎng)(米)。

height:6.0#設(shè)置代價(jià)地圖的高(米)。

resolution:0.01transform_tolerance:1.0map_type:costmap代價(jià)地圖配置10.4.4參數(shù)配置文件講解機(jī)器人操作系統(tǒng)(ROS)局部規(guī)劃器(base_local_planner)配置局部規(guī)劃器的作用是,根據(jù)已經(jīng)規(guī)劃好的全局路徑計(jì)算發(fā)布給機(jī)器人的速度控制指令。配置文件名稱為base_local_planner_params.yaml,文件內(nèi)容與解釋如下:controller_frequency:3.0#設(shè)置向底盤(pán)控制移動(dòng)話題cmd_vel發(fā)送命令的頻率。recovery_behavior_enabled:false#是否啟用move_base修復(fù)機(jī)制來(lái)清理出空間。clearing_rotation_allowed:false#決定做清理空間操作時(shí)候,機(jī)器人是否會(huì)采用原地旋轉(zhuǎn)。TrajectoryPlannerROS:max_vel_x:0.3#機(jī)器人的最大線速度,單位是m/s。

min_vel_x:0.05#機(jī)器人的最小線速度,單位是m/s。

max_vel_y:0.0#差速機(jī)器人的零位控制。

min_vel_y:0.0#差速機(jī)器人的零位控制。

min_in_place_vel_theta:0.5#機(jī)器人最小的原地旋轉(zhuǎn)速度,單位是弧度/秒。

escape_vel:-0.1#機(jī)器人逃離時(shí)的速度,單位是m/s。這個(gè)值必須是負(fù)數(shù),這樣機(jī)器人才能反向移動(dòng)。

acc_lim_x:2.5#在x方向上的最大線加速度。

acc_lim_y:0.0#在y方向上的最大線加速度。

acc_lim_theta:3.2#在z方向上的最大旋轉(zhuǎn)角。10.4.4參數(shù)配置文件講解機(jī)器人操作系統(tǒng)(ROS)holonomic_robot:false#全方向驅(qū)動(dòng)機(jī)器人設(shè)置為true,其他設(shè)為false。

yaw_goal_tolerance:0.1#最大距離目標(biāo)方向的誤差(單位為弧度)。

xy_goal_tolerance:0.1#最多距離目標(biāo)位置的誤差(單位為米)。

latch_xy_goal_tolerance:false#一般為false,若設(shè)置為true,則當(dāng)進(jìn)入xy_goal_tolerance范圍內(nèi)后會(huì)設(shè)置一個(gè)鎖,此后即使在旋轉(zhuǎn)調(diào)整yaw的過(guò)程中跳出xy_goal_tolerance,也不會(huì)進(jìn)行xy上的調(diào)整。

pdist_scale:0.9#path的權(quán)重,權(quán)重越大越靠近全局路徑。

gdist_scale:0.6#goal的權(quán)重,權(quán)重越大越靠近全局目標(biāo)。

meter_scoring:true#計(jì)算系數(shù)時(shí)統(tǒng)一參數(shù)的單位為米,一般都是true,false時(shí)單位為cells。

heading_lookahead:0.325#對(duì)不同的旋轉(zhuǎn)角,最多向前看幾米。

heading_scoring:false#通過(guò)機(jī)器人航向計(jì)算距離還是通過(guò)路徑計(jì)算距離,false為通過(guò)路徑計(jì)算。

heading_scoring_timestep:0.8#對(duì)不同的軌跡,每次前向仿真時(shí)間步長(zhǎng)。

occdist_scale:0.1#權(quán)衡機(jī)器人以多大的權(quán)重躲避障礙物,該值過(guò)大會(huì)導(dǎo)致機(jī)器人陷入困境。

oscillation_reset_dist:0.05#表示機(jī)器人運(yùn)動(dòng)多遠(yuǎn)距離才會(huì)重置振蕩標(biāo)記。局部規(guī)劃器(base_local_planner)配置10.4.4參數(shù)配置文件講解機(jī)器人操作系統(tǒng)(ROS)publish_cost_grid_pc:false#將代價(jià)值進(jìn)行可視化顯示,如果設(shè)置為true,那么就會(huì)在~/cost_cloud話題上發(fā)sensor_msgs/PointCloud2類(lèi)型消息。

prune_plan:true#機(jī)器人前進(jìn)是是否清除身后1m外的軌跡。

sim_time:1.0#前向模擬軌跡的時(shí)間,單位為s。

sim_granularity:0.025#軌跡點(diǎn)之間的步長(zhǎng),越短頻率越高,要求的計(jì)算機(jī)的性能要好。

angular_sim_granularity:0.025#給定角度軌跡的弧長(zhǎng)。

vx_samples:8#x方向速度的樣本數(shù)。

vy_samples:0#差速輪機(jī)器人無(wú)Y方向速度,取0。

vtheta_samples:20#角速度的樣本數(shù)。

dwa:true#是否選擇DWA算法,false的話會(huì)選擇TrajectoryRollout。局部規(guī)劃器(base_local_planner)配置10.4.4參數(shù)配置文件講解機(jī)器人操作系統(tǒng)(ROS

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論