日本无码免费高清在线|成人日本在线观看高清|A级片免费视频操逼欧美|全裸美女搞黄色大片网站|免费成人a片视频|久久无码福利成人激情久久|国产视频一二国产在线v|av女主播在线观看|五月激情影音先锋|亚洲一区天堂av

  • 手機(jī)站
  • 小程序

    汽車測(cè)試網(wǎng)

  • 公眾號(hào)
    • 汽車測(cè)試網(wǎng)

    • 在線課堂

    • 電車測(cè)試

面向自動(dòng)駕駛的高精度地圖框架解析和實(shí)戰(zhàn)

2020-08-11 18:22:11·  來(lái)源:hdmap  作者:AdamShan  
 
目前行業(yè)并沒(méi)有通用的標(biāo)準(zhǔn)(OpenDrive并不是為自動(dòng)駕駛設(shè)計(jì)的),Autoware自動(dòng)駕駛系統(tǒng)的矢量地圖和地圖引擎計(jì)劃使用Lanelet2,本文我們就來(lái)了解并且上手一下Lan
目前行業(yè)并沒(méi)有通用的標(biāo)準(zhǔn)(OpenDrive并不是為自動(dòng)駕駛設(shè)計(jì)的),Autoware自動(dòng)駕駛系統(tǒng)的矢量地圖和地圖引擎計(jì)劃使用Lanelet2,本文我們就來(lái)了解并且上手一下Lanelet2高精度地圖框架。
 
前面聊了一些如何制作較大規(guī)模的點(diǎn)云地圖以及如何使用點(diǎn)云地圖進(jìn)行定位的方法,點(diǎn)云圖是高精度地圖的一部分,主要用于配準(zhǔn)定位和作為高精度地圖構(gòu)建環(huán)節(jié)中的幾何圖層(能夠反應(yīng)路面幾何結(jié)構(gòu)和大量有效信息),產(chǎn)品形態(tài)的高精度地圖通常為包含大量交通要素語(yǔ)義和坐標(biāo)信息的矢量地圖,如何定義、構(gòu)造這種面向自動(dòng)駕駛業(yè)務(wù)的矢量地圖,目前行業(yè)并沒(méi)有通用的標(biāo)準(zhǔn)(OpenDrive并不是為自動(dòng)駕駛設(shè)計(jì)的),Autoware自動(dòng)駕駛系統(tǒng)的矢量地圖和地圖引擎計(jì)劃使用Lanelet2,本文我們就來(lái)了解并且上手一下Lanelet2高精度地圖框架。
 
Lanelet2是什么?
準(zhǔn)確地說(shuō),Lanelet2是一套面向自動(dòng)駕駛(highly automated driving ,HAD)的地圖框架,使用C++實(shí)現(xiàn),下圖描述了自動(dòng)駕駛模塊對(duì)于HAD map(為HAD服務(wù)的地圖我們把它簡(jiǎn)稱為HAD map)的使用情況:
 
HAD map很重要,一些圖商也號(hào)稱能夠提供面向自動(dòng)駕駛的高精度地圖,但是真正開源的地圖架構(gòu)非常少,Lanelet2前身是Liblanelet,該框架作為map format驅(qū)動(dòng)了 Bertha-Benz項(xiàng)目(奔馳的一個(gè)HAD原型車) ,Liblanelet提供了用于routing、動(dòng)作規(guī)劃乃至目標(biāo)行為預(yù)測(cè)的C++接口,但是Liblanelet這個(gè)庫(kù)存在一些短板,并不能支持上圖中所示HAD系統(tǒng)中的許多功能,Lanelet2就是Liblanelet庫(kù)的改進(jìn)版。
地圖格式(map format)目前來(lái)說(shuō)是比較混亂的,開源領(lǐng)域用的最多的當(dāng)屬OSM的地圖格式,OSM全稱Open Street Map,是一個(gè)開源的、眾包電子地圖框架。
Lanelet2的設(shè)計(jì)理念
由上圖可知HAD系統(tǒng)對(duì)于HD map的利用情況可以分為以下三個(gè)方面:
  • 使用路網(wǎng)(road network)信息進(jìn)行全局路線規(guī)劃(routing)、行為決策以及目標(biāo)預(yù)測(cè);
  • 需要結(jié)合車道和其他圖層的信息的AD模塊:諸如路徑規(guī)劃(path planning)、場(chǎng)景理解等;
  • 需要直接訪問(wèn)圖層元素的AD模塊:主要是定位模塊,將地圖的某些圖層(比如點(diǎn)云圖)用于配準(zhǔn)定位
routing和path planning的區(qū)別:routing是指在導(dǎo)航中獲取的從起點(diǎn)到終點(diǎn)的路線,是全局的規(guī)劃,而path planning是指根據(jù)當(dāng)前的全局規(guī)劃選擇接下來(lái)的100米的路徑,包括走哪條車道、是否變道等,是局部的規(guī)劃,兩者相交(路徑規(guī)劃需要滿足routing的要求)但不相同。
我們就從這三個(gè)方面理解Lanelet2的設(shè)計(jì)理念。
路網(wǎng)(Road network)
路網(wǎng)即地圖中道路的拓?fù)潢P(guān)系,在傳統(tǒng)的電子地圖中,路網(wǎng)是地圖的骨架,道路元素多是通過(guò)在路網(wǎng)基礎(chǔ)上添加offset來(lái)表述的。HAD系統(tǒng)中,使用路網(wǎng)語(yǔ)義的主要目的之一就是產(chǎn)生routing,即起點(diǎn)到終點(diǎn)的全局路線,區(qū)別于粗粒度的電子導(dǎo)航routing,AD系統(tǒng)中的routing不僅需要知道車的路線(road級(jí)別),還需要知道車道(lane)級(jí)別的信息,比如說(shuō)可以走哪些車道、車道是不是公交專用道、車道能否變道、能否借道等等。
行為決策也和路網(wǎng)信息高度相關(guān),目前的HAD系統(tǒng)里,行為決策的實(shí)現(xiàn)依然是基于交通規(guī)則的,對(duì)規(guī)則列表的適配需要結(jié)合routing信息。目標(biāo)的預(yù)測(cè)也類似,道路交通中的目標(biāo)預(yù)測(cè)一個(gè)重要的先驗(yàn)就是目標(biāo)在多數(shù)情況下會(huì)在自己的車道上行駛或者遵循交通規(guī)則變道,針對(duì)不同的道路參與者,交通規(guī)則也不一定相同,所以,一個(gè)合格的自動(dòng)駕駛地圖,應(yīng)當(dāng)包含所有交通參與者的道路規(guī)則,比如說(shuō)非機(jī)動(dòng)車道以及行人可能出現(xiàn)的區(qū)域和運(yùn)動(dòng)的方向等。
車道和環(huán)境要素信息
車道的幾何信息對(duì)于AD系統(tǒng)的規(guī)劃尤其是動(dòng)作規(guī)劃尤為關(guān)鍵,HAD規(guī)劃系統(tǒng)產(chǎn)生的軌跡并不一定嚴(yán)格遵循車道中心線,在安全和 車道道寬 允許的情況下動(dòng)作規(guī)劃模塊通常傾向于產(chǎn)生平滑且舒適度高的軌跡,這就意味著我們不僅需要知道車道中心線的位置,車道的邊緣坐標(biāo)對(duì)于HAD系統(tǒng)也是非常有意義的。
物理元素
基于配準(zhǔn)的定位需要直接訪問(wèn)某些地圖中的某些物理元素,這些物理元素的類別和具體的定位方法相關(guān)。包括landmark(路標(biāo))、護(hù)欄、道路邊緣等信息,HAD map理論上應(yīng)該包含這些物理元素以支持基于地圖的配準(zhǔn)定位。
高度精度地圖的另一大挑戰(zhàn)就是保持地圖的“新鮮度”,即始終處于最新的狀態(tài),顯然地圖包含的要素越多,需要更新的概率就越大,現(xiàn)代電子地圖通常只包含已經(jīng)預(yù)處理過(guò)的結(jié)構(gòu)化數(shù)據(jù),不包含基礎(chǔ)的物理元素,那么一旦環(huán)境發(fā)生變化,就很難追蹤環(huán)境變化對(duì)地圖的影響。
lanelet2論文中的一個(gè)例子:假定我們拆除了一條道上的限速牌,那么相應(yīng)的這塊限速牌后的road section(路段)的限速也就應(yīng)該被解除,但是實(shí)際上可能在路的另一側(cè)還有一個(gè)限速牌,如果我們只是把速度作為道路的屬性而不標(biāo)注速度屬性的信息源的話,就難以確定速度的來(lái)源是什么,也就是交通規(guī)則的來(lái)源。所以HAD map不僅要生產(chǎn)必要的交通要素,還應(yīng)該包含交通要素的來(lái)源。
設(shè)計(jì)理念總結(jié)
lanelet2稱上述可以被觀測(cè)到的要素為地圖的 物理層(physical layer) ,諸如路標(biāo)、紅綠燈、交通標(biāo)志、防撞欄等等,其他的所有地圖元素,比如車道(lane),是這些物理元素的一種抽象表示。同樣地,交通規(guī)則是規(guī)則源(例如交通信號(hào)燈)與其所應(yīng)用的車道之間的關(guān)聯(lián)。根據(jù)這些物理元素我們可以追蹤這些關(guān)聯(lián)信息,我們稱這些元素為地圖的 關(guān)聯(lián)層(relational layer)。
然而,并非地圖的所有元素都可以與物理層相關(guān)聯(lián),因?yàn)榈缆方煌ㄖ型鶗?huì)包含隱含的規(guī)則,比如說(shuō)在路口內(nèi),車道線和車道邊緣并沒(méi)有畫出來(lái),但是它們是存在的,HAD map必須包含這些隱含的元素以保證路網(wǎng)拓?fù)涞倪B通性,這些元素都是我們的行為“常識(shí)”引入的,不和實(shí)際的可觀測(cè)元素關(guān)聯(lián)。
站在地圖可驗(yàn)證性的角度來(lái)看, Lanelet2作者認(rèn)為應(yīng)當(dāng)盡可能避免這種“常識(shí)”元素和規(guī)則,一方面是因?yàn)槿狈ξ锢碓仃P(guān)聯(lián),給地圖驗(yàn)證帶來(lái)困難,另一方面,“常識(shí)”有時(shí)候也是會(huì)發(fā)生變化的。
可拓展性也是HAD map必須具備的特性,隨著無(wú)人車算法的發(fā)展,必然對(duì)于地圖的需求也會(huì)發(fā)生變化,另外地圖得適配各個(gè)國(guó)家的交通規(guī)則,這些都對(duì)地圖的可擴(kuò)展性提出了要求。總的來(lái)說(shuō),為了設(shè)計(jì)面向自動(dòng)駕駛的地圖,lanelet2認(rèn)為需要遵循一下原則:
  • 可以通過(guò)將地圖上的所有信息與可觀察元素(物理元素)相關(guān)聯(lián)來(lái)進(jìn)行驗(yàn)證;
  • 涵蓋所有潛在的可通行區(qū)域,包括道路以外的;
  • 地圖上各個(gè)車道與區(qū)域之間的交互必須是可識(shí)別且可理解的,通過(guò)地圖要能夠知道哪些車道間可以進(jìn)行變道;
  • 地圖應(yīng)當(dāng)包含對(duì)其他類型交通參與者(比如說(shuō)行人、非機(jī)動(dòng)車)的交通規(guī)則和信息;
  • 應(yīng)當(dāng)將地圖的信息源和其對(duì)道路交通的影響進(jìn)一步分離,以保證元素變更的可追蹤性;
  • 可擴(kuò)展性和模塊化;
  • 可以輕松修改,以實(shí)現(xiàn)地圖的更新;
結(jié)合以上基本原則,我們來(lái)看一下Lanelet2對(duì)于地圖元素的劃分和定義,以及結(jié)合osm的Lanelet2地圖格式。
Lanelet2架構(gòu)
由上述的設(shè)計(jì)理念可知,Lanelet2地圖可以劃分為:
  • 物理層(physical layer):主要包含一些能具體觀測(cè)到的元素
  • 關(guān)聯(lián)層(relational layer):物理層的元素被進(jìn)一步關(guān)聯(lián)到車道、區(qū)域和交通規(guī)則等信息
  • 拓?fù)鋵樱╰opological layer)
Lanelet2默認(rèn)的格式為XML形式的OSM地圖格式,可以使用OSM地圖編輯器進(jìn)行編輯和可視化。Lanelet2假定地圖中的所有元素均能投射到平面,不過(guò)元素的高度信息也會(huì)被保存,以避免將立交橋處理成十字路口的情況。當(dāng)加載地圖的時(shí)候,為了方便地圖的使用,會(huì)采用通用莫卡托投射(UTM,Universal Transverse Mercator)將地圖投射到笛卡爾坐標(biāo)系。
Lanelet基礎(chǔ)元素
Lanelet2地圖主要包含6類基元(18年論文中為5類,后擴(kuò)展為6類),分別是:
  • Points:點(diǎn)
  • Linestrings: 由點(diǎn)前后連接構(gòu)成的折線序列
  • Polygons:多邊形
  • Lanelets:車道的原子單元,或者說(shuō)對(duì)車道的最小劃分
  • Areas:區(qū)域,類似與lanelet,但是它一般用于描述建筑、停車區(qū)等獨(dú)立區(qū)域
  • Regulatory elements:控制元素,能產(chǎn)生交通規(guī)則的元素,如信號(hào)燈、限速牌等
前三類為物理層,其余為關(guān)聯(lián)層,每一個(gè)元素都有自己唯一的ID,我們逐一分析基元的含義。
Points
Points是地圖的最基礎(chǔ)元素,單個(gè)的Points也能表示一些含義,比如說(shuō)一個(gè)柱子,但是更多情況下,點(diǎn)是作為L(zhǎng)inestrings的一部分出現(xiàn)的。一個(gè)Point會(huì)包含三維位置信息,Points也是Lanelet2中唯一真實(shí)包含位置信息的基礎(chǔ)元素,其他基元直接或間接地由點(diǎn)組成。下面是一個(gè)Points的例子:
  •  
 
12345678
Lanelet2中的Points會(huì)被直接映射為OSM中的Node,其中的ele的tag主要描述點(diǎn)的海拔高度(WGS84坐標(biāo)系下)。
Linestrings
如下圖所示,Linestrings是對(duì)一組有序的點(diǎn)進(jìn)行線性插值構(gòu)成的線串,用于描述地圖中元素的輪廓,包括道路標(biāo)線、路緣、外墻、柵欄等,它也能描述一些虛擬的線,比如說(shuō)車道線等,Linestrings不能包含重復(fù)的點(diǎn),且不能相交,Linestrings必須包含type屬性以確定其用途。
 
Polygon
Polygons也就是多邊形的意思,和Linestrings類似,也是一組折線,區(qū)別在于Polygons的第一個(gè)點(diǎn)和最后一個(gè)點(diǎn)是連接的,從而能夠閉環(huán)形成一個(gè)圖形。多邊形通常用作自定義元素(例如感興趣的區(qū)域)。
Lanelet
Lanelet定義了地圖中車道的原子段,原子段即最小分割,指在這一段lane上交通規(guī)則是不變的。下圖是lanelet的定義,可見(jiàn)一個(gè)lanelet包含左右兩條lanestrings分別表示車道的左右邊緣,構(gòu)成了lanelet的可行駛區(qū)域(drivable area)。lanelet通常還會(huì)包含Regulatory elements指定該lanelet上的交通規(guī)則,連續(xù)的兩端lanelet共享左右linestrings的端點(diǎn),Lanelet邊緣的類型將被用于判斷能否變道。車道中心線是非必須元素,可以指定也可以不指定,不指定的話在加載osm是Lanelet2庫(kù)會(huì)自動(dòng)生產(chǎn)中心線。
 
下面是一個(gè)lanelet的例子,我們必須能夠直接從lanelet元素中獲得車道的限速,可以通過(guò)兩種方法指定lanelet的限速:第一是通過(guò)關(guān)聯(lián)一個(gè)type為SpeedLimit的控制元素來(lái)指定限速,第二則是如下例所示設(shè)定location的tag來(lái)指定限速(如果是在德國(guó)市區(qū),那么限速就是50kph)。
  •  
 
123456789
lanelet元素對(duì)應(yīng)于OSM格式中的relation,下圖是該lanelet(id為45064)在JOSM中的可視化效果(圖中粉色線):
 
Area
Area類似于Lanelet,是指由多個(gè)linestrings構(gòu)成的一片區(qū)域, 通常用來(lái)描述停車位、綠化帶、建筑物等,Area也可以關(guān)聯(lián)控制元素以添加交通規(guī)則。下圖使用Area描述了兩個(gè)停車區(qū):
 
具體到osm format中,采用type為multipolygon的relation描述Area,停車區(qū)的例子如下:
 
123456789
該Area元素對(duì)應(yīng)于下圖中粉紅色框內(nèi)的停車區(qū):
 
Regulatory elements(控制元素)
控制元素定義了地圖中的交通規(guī)則,諸如限速、優(yōu)先規(guī)則、信號(hào)燈等,控制元素需要被lanelet或者area引用才能發(fā)揮作用。下圖描述的是信號(hào)燈的控制元素,該控制元素包含停止線以及紅路燈:
 
Lanelet2項(xiàng)目各個(gè)模塊
Lanelet2論文的另外一個(gè)工作就是基于以上設(shè)計(jì)理念和基本要素開源了一套C++編寫的地圖框架,lanelet2項(xiàng)目依靠catkin編譯,所以每個(gè)模塊都是以ros package的形式進(jìn)行管理,各個(gè)模塊內(nèi)容如下:
  • lanelet2:基礎(chǔ)模塊,沒(méi)有具體實(shí)現(xiàn)
  • lanelet2_core:實(shí)現(xiàn)了基元、地理計(jì)算等核心庫(kù)
  • lanelet2_io:lanelet地圖的IO庫(kù)
  • lanelet2_traffic_rules:提供地圖交通規(guī)則的支持
  • lanelet2_projection:提供WGS84坐標(biāo)系到指定坐標(biāo)系下的投影的實(shí)現(xiàn)
  • lanelet2_routing:提供基于lanelet地圖的routing功能
  • lanelet2_maps:lanelet2官方提供的示例地圖
  • lanelet2_python:lanelet2的python接口
  • lanelet2_validation:驗(yàn)證Lanelet2地圖
  • lanelet2_examples:教程和示例
可以通過(guò)lanelet2_examples下面的代碼進(jìn)一步學(xué)習(xí)lanelet2項(xiàng)目的API的使用。具體使用方法本文不再贅述,下面我們主要關(guān)注lanelet2在自動(dòng)駕駛系統(tǒng)Autoware中的應(yīng)用。
注意:建議看到這里的同學(xué)先完成lanelet2_examples下的代碼閱讀和理解,再開始下面的閱讀。
Autoware對(duì)lanelet2的擴(kuò)展
Autoware最新的Map模塊已經(jīng)舍棄了先前的基于csv的map format,轉(zhuǎn)而使用基于lanelet2的OSM格式地圖,Autoware的map模塊在AD系統(tǒng)中的結(jié)構(gòu)和數(shù)據(jù)流如下圖所示:
 
lanelet2地圖在系統(tǒng)中被稱為vector map,主要描述道路交通的語(yǔ)義信息,目前來(lái)說(shuō)vector map主要被用于planning和perception兩個(gè)模塊,其作用主要為:
  • Perception:
  • 使用vector map預(yù)測(cè)目標(biāo)的軌跡(基于車道的)
  • 用于紅綠燈檢測(cè)
  • Planning:
  • 計(jì)算當(dāng)前位置到目標(biāo)終點(diǎn)的routing路線
  • 在lane follow場(chǎng)景下(注意,最新的Autoware也采用了類似Apollo的規(guī)劃模塊設(shè)計(jì),基于場(chǎng)景進(jìn)行了劃分)計(jì)算沿車道的軌跡
  • 交通規(guī)則的讀取
為了方便自動(dòng)駕駛系統(tǒng)各個(gè)模塊調(diào)用HAD Map,Autoware對(duì)lanelet2進(jìn)行了一些擴(kuò)展,擴(kuò)展內(nèi)容包括必須屬性和非必須屬性,表現(xiàn)為OSM中的Tag,下面詳細(xì)討論:
額外的必須屬性
海拔信息(ele)
point的海拔信息在lanelet2中是非必須的,但是對(duì)于Autoware來(lái)說(shuō),在執(zhí)行信號(hào)燈檢測(cè)模塊時(shí)依賴該信息,所以Autoware要求OSM中所有的point(node)都應(yīng)該包含名為ele的海拔信息及具體的數(shù)值,如下所示:
  •  
 
123
SpeedLimit屬性
 
在lanelet2中,lanelet(osm對(duì)應(yīng)于ralation)的speedlimit是非必須tag,因?yàn)閘anelet2有三種設(shè)定speedlimit的方式(前面已經(jīng)討論),為了避免混淆,Autoware將其作為必須tag,如下:
 
1234567
信號(hào)燈
默認(rèn)的lanelet2允許使用linestring和Polygon來(lái)描述信號(hào)燈,Autoware為了避免混淆僅允許使用linestring描述信號(hào)燈,如下圖所示,僅用一條linestring描述一個(gè)紅綠燈,linestring的起點(diǎn)為左下,終點(diǎn)為右下角,通過(guò)定義height指定信號(hào)燈的高度,如下實(shí)例所示:
 
 
1234567
道路方向
 
路口內(nèi)的lanelet需要包含turn_direction屬性以支持左右轉(zhuǎn)向燈的功能,示例如下:
  •  
 
12345678910
使用Lanelet2地圖完成仿真環(huán)境中的routing
lanelet2地圖中包含大量交通元素,自動(dòng)駕駛系統(tǒng)中各個(gè)模塊會(huì)根據(jù)其自身的業(yè)務(wù)需求來(lái)使用地圖中的對(duì)應(yīng)元素,本文的實(shí)踐部分我們將采用lanelet2地圖完成一個(gè)起點(diǎn)到終點(diǎn)的routing,并且將routing的結(jié)果顯示于Rviz中,實(shí)踐部分為C++編寫的ROS項(xiàng)目。
代碼克隆與環(huán)境準(zhǔn)備
讀者可以直接在你的ROS workspace下克隆我的這個(gè)倉(cāng)庫(kù):
cd your_ros_workspace/src/
git clone https://github.com/AbangLZU/ad_with_lanelet2.git
12
根據(jù)倉(cāng)庫(kù)中README.md的提示(Manual installation一節(jié)),安裝lanelet2項(xiàng)目所需的依賴,在此不贅述。
安裝好lanelet2相關(guān)依賴后,使用catkin build編譯:
cd your_ros_workspace
catkin build
12
你可能沒(méi)有安裝catkin build工具,可以使用sudo apt-get install python-catkin-tools 命令安裝。
本項(xiàng)目的倉(cāng)庫(kù)包含了一份Autoware官方開源的高精度地圖樣例(lanelet2格式),我們使用該地圖完成實(shí)踐,地圖文件位于項(xiàng)目的:
map/map_loader/data/lanelet2_map.osm
1
路徑下。
Lanelet2地圖的可視化和編輯
因?yàn)椴捎昧薕SM的地圖格式定義,Lanelet2地圖可以很方便地使用OSM的工具鏈進(jìn)行查看和編輯,下面我們使用JOSM工具對(duì)項(xiàng)目?jī)?nèi)的lanelet2_map.osm地圖進(jìn)行可視化和編輯。JOSM是一個(gè)Java實(shí)現(xiàn)的對(duì)OSM進(jìn)行編輯的工具,因其為Java程序,所以可以跨平臺(tái)使用,官網(wǎng)下載最新版本的JOSM,本文采用的是jar包的形式運(yùn)行,jar下載鏈接:https://josm.openstreetmap.de/josm-tested.jar
配置系統(tǒng)的Java環(huán)境,參照教程:https://josm.openstreetmap.de/wiki/Download#Java 檢查你的系統(tǒng)是否正確安裝Java,你也可以在命令行通過(guò)java --version檢查系統(tǒng)中安裝的Java,我的環(huán)境如下:
openjdk 14.0.1 2020-04-14
OpenJDK Runtime Environment (build 14.0.1+7)
OpenJDK 64-Bit Server VM (build 14.0.1+7, mixed mode, sharing)
123
下載好josm-tested.jar包后,在同目錄下使用以下命令運(yùn)行JOSM:
java -jar josm-tested.jar
1
在JOSM中添加lanelet2的地圖樣式和預(yù)設(shè)組合標(biāo)簽,在JOSM中選擇預(yù)設(shè)組合->preset preferences->地圖樣式->+:
 
分別將項(xiàng)目中l(wèi)anelet2_maps/josm/目錄下的lanelets.mapcss和lines.mapcss添加為地圖樣式,在添加預(yù)設(shè)組合標(biāo)簽下,添加lanelet2_maps/josm/目錄下的laneletpresets.xml文件:
 
在JOSM中,選擇文件->打開,選擇項(xiàng)目中map/map_loader/data/目錄下的lanelet2_map.osm文件,得到如下地圖:
 
你可在JOSM中查看和編輯地圖中的各個(gè)元素。
在ROS中使用lanelet2地圖完成routing
在你的ros workspace中,運(yùn)行本項(xiàng)目:
cd your_ros_workspace
source devel/setup.bash
roslaunch src/ad_with_lanelet2/run_map_simulator.launch
123
如圖,map被加載與Rviz中:
 
run_map_simulator.launch內(nèi)容如下,一共會(huì)啟動(dòng)4個(gè)ros node:
  • planning仿真節(jié)點(diǎn):來(lái)自Autoware的簡(jiǎn)單planning仿真
  • map loader:加載Autoware擴(kuò)展版lanelet2地圖,發(fā)送用于可視化的Rviz marker,以ros msg的形式發(fā)送map
  • mission planning模塊:來(lái)自Autoware的任務(wù)規(guī)劃模塊,在本例中主要使用了Routing路線生成
  • Rviz:?jiǎn)?dòng)Rviz并使用預(yù)先設(shè)置的配置參數(shù)
 
 
1234567
點(diǎn)擊Rviz中的2D Pose Estimate在圖中設(shè)置當(dāng)前位置,設(shè)置完成后如下圖所示:
 
仿真節(jié)點(diǎn)根據(jù)這個(gè)init pose發(fā)一個(gè)base_link 到world坐標(biāo)系的tf,接著使用Rviz中的2D Nav Goal設(shè)置routing的終點(diǎn),具體見(jiàn)如下動(dòng)圖:
 
如圖中所示,mission planner會(huì)根據(jù)設(shè)置的目標(biāo)位姿動(dòng)態(tài)生成routing路線(圖中深色路線):
 
注:該樣例地圖為Tier 4公司(Autoware的主要維護(hù)者)開源的地圖,在日本,所以是靠左行駛,routing的時(shí)候需要按照靠左行駛的規(guī)則設(shè)定起終點(diǎn)。
構(gòu)建自己的Lanelet2高精度地圖
總的來(lái)說(shuō),Lanelet2是一套完全開源的、較為完整的、專為自動(dòng)駕駛設(shè)計(jì)的高精度地圖架構(gòu)和方案,并且構(gòu)建在OSM的基礎(chǔ)上,擁有較為豐富的開源工具支持。你可能已經(jīng)迫不及待的在自己的自動(dòng)駕駛項(xiàng)目中應(yīng)用該高精度地圖框架,那么如何構(gòu)建你自己的lanelet2高精度地圖呢?實(shí)際上,完整的高精度地圖建圖是一套復(fù)雜的產(chǎn)品化流程,存在較高的技術(shù)壁壘和法規(guī)風(fēng)險(xiǎn),在中國(guó),要構(gòu)建公共道路高精度地圖需要獲得國(guó)家自然資源部的相關(guān)測(cè)繪資質(zhì),否則會(huì)被認(rèn)定為非法測(cè)繪行為,所以在中國(guó),需要分以下幾種情況討論:
  • 如果你是獲得資質(zhì)的傳統(tǒng)圖商/自動(dòng)駕駛公司:支持Lanelet2格式的高精度地圖是發(fā)展的趨勢(shì),其開源性保證了該產(chǎn)品在市場(chǎng)上的通用性,Autoware對(duì)lanelet2的支持會(huì)讓國(guó)內(nèi)對(duì)lanelet2格式的地圖需求增加;
  • 如果你是無(wú)資質(zhì)的自動(dòng)駕駛公司/高校研究者:選擇有資質(zhì)的高精度地圖公司的lanelet2產(chǎn)品將是最高效、省錢的解決方案;
目前國(guó)內(nèi)能夠完美支持lanelet2(Autoware擴(kuò)展版)且具備相關(guān)測(cè)繪資質(zhì)的高精度地圖公司主要為高深智圖(Deepmap),其官方網(wǎng)址見(jiàn)參考鏈接。
參考
  • lanelet2論文:https://www.mrt.kit.edu/z/publ/download/2018/Poggenhans2018Lanelet2.pdf
  • lanelet2原項(xiàng)目地址:https://github.com/fzi-forschungszentrum-informatik/Lanelet2
  • 本文項(xiàng)目倉(cāng)庫(kù):https://github.com/AbangLZU/ad_with_lanelet2
  • Autoware: https://www.autoware.ai/
  • JOSM:https://josm.openstreetmap.de/
  • 高深智圖:https://www.deepmap.ai/
作者:AdamShan
 
 
分享到:
 
反對(duì) 0 舉報(bào) 0 收藏 0 評(píng)論 0
滬ICP備11026917號(hào)-25