sumo使用OpenStreetMap生成地圖

使用OpenStreetMap生成地圖

OpenStreetMap是由貢獻(xiàn)者開發(fā)的世界開放許可證地圖粪薛。這些地圖的各個(gè)部分可以導(dǎo)出到.osmOpenSreetMap格式的文件纵柿,該文件本質(zhì)上是XML。CARLA可以將文件轉(zhuǎn)換為OpenDRIVE格式犬绒,并使用OpenDRIVE Standalone Mode將其作為任何其他OpenDRIVE映射攝取。這個(gè)過程非常簡單。


1-使用OpenStreetMap獲取地圖

首先要做的是使用OpenStreetMap生成包含地圖信息的文件柄错。

1.1芜抒。轉(zhuǎn)到openstreetmap.org瓤逼。如果未正確顯示地圖,請嘗試更改righ面板中的圖層丙号。

1.2搜索所需的位置并放大到特定區(qū)域疫萤。

openstreetmap_view

警告

由于虛幻引擎的限制颂跨,CARLA可以提取有限尺寸的地圖(巴黎等大城市會(huì)限制引擎的使用)。此外扯饶,地圖越大恒削,轉(zhuǎn)換為OpenDRIVE所需的時(shí)間就越長。

1.3帝际。Export單擊窗口左上角的蔓同。該出口潘內(nèi)爾將打開。

1.4蹲诀。Manually select a different area在“導(dǎo)出”面板中單擊斑粱。

1.5。通過在視口中拖動(dòng)正方形區(qū)域的角來選擇自定義區(qū)域脯爪。

1.6则北。點(diǎn)擊Export按鈕,出口潘內(nèi)爾痕慢,并保存選定區(qū)域的地圖信息.osm的文件尚揣。


2-轉(zhuǎn)換為OpenDRIVE格式

CARLA可以讀取由.osmOpenStreetMap生成的文件中的內(nèi)容,并將其轉(zhuǎn)換為OpenDRIVE格式掖举,以便可以將其作為CARLA映射進(jìn)行提取快骗。可以使用PythonAPI中的以下類完成此操作。

  • carla.Osm2Odr –執(zhí)行轉(zhuǎn)換的類方篮。它將.osm解析后的內(nèi)容作為strind名秀,并返回包含結(jié)果的字符串.xodr
    • osm_file.osm解析為字符串的初始文件的內(nèi)容藕溅。
    • settingscarla.Osm2OdrSettings對象匕得,其中包含用于參數(shù)化轉(zhuǎn)換的設(shè)置。
  • carla.Osm2OdrSettings –包含在轉(zhuǎn)換過程中使用的不同參數(shù)的Helper類巾表。
    • use_offsets (默認(rèn)值為False) -確定應(yīng)使用偏移生成地圖的位置汁掠,從而根據(jù)該偏移將原點(diǎn)從中心移出。
    • offset_x (默認(rèn)值為0.0) — X軸上的偏移量集币。
    • offset_y (默認(rèn)值為0.0) -Y軸上的偏移量考阱。
    • default_lane_width (默認(rèn)4.0) —確定在生成的XODR文件中通道應(yīng)具有的寬度。
    • elevation_layer_height (默認(rèn)值0.0) —確定用于重疊元素的不同層中的高度分隔元素惠猿。閱讀更多有關(guān)圖層的信息羔砾。

轉(zhuǎn)換的輸入和輸出不是.osm.xodr文件本身,而是它們的內(nèi)容偶妖。出于上述原因姜凄,代碼應(yīng)類似于以下內(nèi)容。

# Read the .osm data
f = open("path/to/osm/file", 'r')
osm_data = f.read()
f.close()

# Define the desired settings. In this case, default values.
settings = carla.Osm2OdrSettings()
# Convert to .xodr
xodr_data = carla.Osm2Odr.convert(osm_data, settings)

# save opendrive file
f = open("path/to/output/file", 'w')
f.write(xodr_data)
f.close()

結(jié)果文件包含OpenDRIVE格式的道路信息趾访。


3-導(dǎo)入CARLA

最后态秧,可以使用OpenDRIVE Standalone Mode在CARLA中輕松提取OpenDRIVE文件。

a)使用您自己的腳本-client.generate_opendrive_world()通過API進(jìn)行調(diào)用扼鞋。這將生成新地圖申鱼,并阻止模擬,直到準(zhǔn)備就緒為止云头。
使用carla.OpendriveGenerationParameters類設(shè)置網(wǎng)格生成的參數(shù)化捐友。

vertex_distance = 2.0  # in meters
max_road_length = 500.0 # in meters
wall_height = 0.0      # in meters
extra_width = 0.6      # in meters
world = client.generate_opendrive_world(
    xodr_xml, carla.OpendriveGenerationParameters(
        vertex_distance=vertex_distance,
        max_road_length=max_road_length,
        wall_height=wall_height,
        additional_width=extra_width,
        smooth_junctions=True,
        enable_mesh_visibility=True))

注意

wall_height = 0.0強(qiáng)烈建議。OpenStreetMap將相反方向的車道定義為不同的道路溃槐。如果生成墻匣砖,則導(dǎo)致墻重疊和不希望的碰撞。

b)使用config.py-腳本可以使用新參數(shù)將OpenStreetMap文件直接加載到CARLA中昏滴。

python3 config.py --osm-file=/path/to/OSM/file

重要

client.generate_opendrive_world()要求將OpenDRIVE文件內(nèi)容解析為string猴鲫,并允許參數(shù)化。相反谣殊,config.py腳本需要文件****的路徑拂共,.xodr并且始終使用默認(rèn)參數(shù)。

無論哪種方式姻几,都應(yīng)在CARLA中自動(dòng)提取地圖宜狐,并且結(jié)果應(yīng)與此類似势告。
opendrive_meshissue

使用OpenStreetMap生成CARLA地圖的結(jié)果。

警告

生成的道路突然在地圖邊界終止肌厨。當(dāng)車輛無法找到下一個(gè)路標(biāo)時(shí)培慌,這將導(dǎo)致TM崩潰豁陆。為避免這種情況柑爸,默認(rèn)情況下OSM模式設(shè)置為Trueset_osm_mode())。這將顯示警告盒音,并在必要時(shí)銷毀車輛表鳍。


這就是有關(guān)如何使用OpenStreetMap生成CARLA地圖的全部知識。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末祥诽,一起剝皮案震驚了整個(gè)濱河市譬圣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌雄坪,老刑警劉巖厘熟,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異维哈,居然都是意外死亡绳姨,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門阔挠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來飘庄,“玉大人,你說我怎么就攤上這事购撼」蛳鳎” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵迂求,是天一觀的道長碾盐。 經(jīng)常有香客問我,道長揩局,這世上最難降的妖魔是什么毫玖? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮谐腰,結(jié)果婚禮上孕豹,老公的妹妹穿的比我還像新娘。我一直安慰自己十气,他們只是感情好励背,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著砸西,像睡著了一般叶眉。 火紅的嫁衣襯著肌膚如雪址儒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天衅疙,我揣著相機(jī)與錄音莲趣,去河邊找鬼。 笑死饱溢,一個(gè)胖子當(dāng)著我的面吹牛喧伞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播绩郎,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼潘鲫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了肋杖?” 一聲冷哼從身側(cè)響起溉仑,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎状植,沒想到半個(gè)月后浊竟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡津畸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年振定,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片洼畅。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吩案,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出帝簇,到底是詐尸還是另有隱情徘郭,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布丧肴,位于F島的核電站残揉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏芋浮。R本人自食惡果不足惜抱环,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望纸巷。 院中可真熱鬧镇草,春花似錦、人聲如沸瘤旨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽存哲。三九已至因宇,卻和暖如春七婴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背察滑。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工打厘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人贺辰。 一個(gè)月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓户盯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親魂爪。 傳聞我的和親對象是個(gè)殘疾皇子先舷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容