百度Apollo的dreamview的frontend的數(shù)據(jù)傳輸部分簡單梳理

github地址:https://github.com/smileyqp/Apollo_frontEnd-

前臺消息接收方式為:監(jiān)聽端口49923,在webworker接收消息message,并判斷消息的source,消息的source分為三>種map,map_cloud以及realtime,此時給消息type,即realtime為SimWorldUpdate,map為MapData,point_cloud為

接收數(shù)據(jù)message:

---------------------------------realtime接收數(shù)據(jù)部分---------------------------------------------

1.HMIConfig

--------接收的為導(dǎo)航欄部分數(shù)據(jù)------------

dockerImage:字符串文本格式,顯示為彈出框版本信息.EX:apolloauto/apollo:dev-x86_64-20180906_2002

modes:模式setup mode的String數(shù)組,是mode的下拉列表菜單
傳輸過去:{type:ChangeMode,mode:value值}

utmZoneId:數(shù)據(jù),其中初始值為10(?I can not find it's function?where?what?)

availableVehicles:string數(shù)組,將其sort().map(name)排序后就是頁面上vehicles的下拉列表
傳輸過去:{type:ChangeVehicle,new_vehicle: vehcile選項的value值}

availableMaps:string數(shù)組,將其sort().map(name)排序后就是頁面上的map的下拉列表
傳輸過去:{type:ChangeMap,new_map: map選項的value值}

---------接收的為左側(cè)為module controller的模塊數(shù)據(jù)-----------------

modules:接收的為對象數(shù)據(jù)結(jié)構(gòu)為 {key1:value1, key2:value2, ...} ,鍵值對結(jié)構(gòu).接收過來的是鍵值對形>式的對象,之后將其傳入到映射中取值
傳輸過去:這邊
{type: "ExecuteModuleCommand",
module: module,//即其中對應(yīng)的相應(yīng)模塊名稱即key
command: command,}//command即其對應(yīng)的狀態(tài)

//備注WS.executeModuleCommand(id, command)======>>>key值,key的value值是一個狀態(tài),即在其中對應(yīng)的某謳
歌時間對應(yīng)的狀態(tài)
//executeModuleCommand(module, command)

hardware:該模塊與上面模塊接收相同都是鍵值對,但是該模塊沒有發(fā)送值只有接收其status在update狀態(tài)的時候
改變其值

2.HMIStatus
主要是上一步的初始化之后的狀態(tài)更新(涉及function有updateStatus()和updateGroundImage())

currentMode:string類型字符串,推測為初始化之后服務(wù)器端穿過來的一系列mode即模式之后前段選擇那種模式>給后端傳過去,再之后后端講這種模式返回來傳給前端即在更新狀態(tài)時候顯示

currentMap:string類型字符串,同上

currentVehicle:同上string類型,以及采取的方式同上

systemStatus:在這個systemstatus中,傳過來的也是一個鍵值對對象,該鍵值對對象中有兩個參數(shù)傳過來的兩個key以及其數(shù)據(jù)格式如下:
modules:modules也是一個鍵值對的格式,將這個鍵值對的值存到moduleStatus,moduleStatus中的key為
其中取出來的key,但是其值就modules[key].processStatus.running;moduleStatus是一個鍵值對結(jié)構(gòu),之前提到
過,存儲了key為Modules這邊的值,然后他的value則是狀態(tài)值
hardware:鍵值對格式,同上實時更新值

passengerMsg:這是一個string類型的消息

3.VehicleParam
json格式數(shù)據(jù)類似于 vehicleParam = {
frontEdgeToCenter: 3.89,
backEdgeToCenter: 1.04,
leftEdgeToCenter: 1.055,
rightEdgeToCenter: 1.055,
height: 1.48,
width: 2.11,
length: 4.933,
steerRatio: 16,
}
這個中是直接傳過來一個鍵值對數(shù)值,將這個鍵值對的值直接傳給vehicleParam參數(shù),之后在store的update(world){}這個function中調(diào)用

4.SimControlStatus
穿過來的值只是觸發(fā)button的enabled
STORE.setOptionStatus('simControlEnabled', message.enabled);

5.SimWorldUpdate
timestamp
world.sequenceNum

    autoDrivingCar鍵值對結(jié)構(gòu):
            positionX,positionY,heading


    navigationPath鍵值對map
    laneMarker
    planningTrajectory

6.MapElementIds
mapHash,mapElementIds,mapRadius

7.DefaultEndPoint
poi數(shù)組,數(shù)組里面包含map,map包含name和waypoint格式如下:
// Map from POI name to its x,y coordinates,
// e.g. {POI-1: [{x: 1.0, y: 1.2}, {x: 101.0, y: 10.2}]}

8.RoutePath
routingTime,routePath

監(jiān)聽三種傳過來的數(shù)據(jù)source,三種source分別為realtime,map,point_cloud:
reaktime的message type為SimWorldUpdate

map的message type為MapData

point_cloud的message type為?此處沒有寫明

-----------------------------point cloud點云接收數(shù)據(jù)的部分-------------------------------------
type:PointCloudStatus:傳進去的而數(shù)據(jù)為數(shù)組點集合

-------------------------------websocket map數(shù)據(jù)接收部分-----------------------------
傳過來一串map相關(guān)數(shù)據(jù)的數(shù)組

-------------------------offline數(shù)據(jù)接收部分;這個是離線部分咩------------------------------------
GroundMetadata傳過來的數(shù)據(jù)中包含這些,在render的tileground中,初始化使用這些數(shù)據(jù)
this.metadata = {
tileLength: metadata.tile * metadata.mpp,
left: metadata.left,
top: metadata.top,
numCols: metadata.wnum,
numRows: metadata.hnum,
mpp: metadata.mpp,
tile: metadata.tile,
imageUrl: metadata.image_url,
};

FrameCount:傳過來的數(shù)據(jù)為一串string,但是這個string是只含有數(shù)字的,之后會用parseInt將其解析出來使用

RoutePath:
傳過來的數(shù)據(jù)為一個對象有兩個屬性routingTime和rouotePath,分別有值,鍵值對形式

SimWorldUpdate:
傳過來的數(shù)據(jù)用于message的check,含有數(shù)據(jù)為timestamp和world(其中world中還有sequenceNum)


                            數(shù)據(jù)發(fā)送部分

------------------------------map------------------------------------------
type:RetrieveMapData
傳過去的element是一個對象,對象中每個屬性即key的值即value又是一個數(shù)組

type:RetrieveRelativeMapData

--------------------------------point_cloud----------------------------------
type:TogglePointCloud
傳過去的值enable的值為布爾值

-------------------------------realtime----------------------------------------------
function:clearInterval
type:RequestSimulationWorld
planning : requestPlanningData,

function:requestRoute
type: "SendRoutingRequest",
start: start,
end: end,
waypoint: waypoint,

function:requestDefaultRoutingEndPoint
type:GetDefaultEndPoint,沒有傳其他數(shù)據(jù)

function:resetBackend
type: "Reset",沒有其他數(shù)據(jù)

function:dumpMessages
type:Dump

function:changeSetupMode
type: "ChangeMode",
new_mode: mode,

function:changeMap
type: "ChangeMap",
new_map: map,

function:changeVeicle
type: "ChangeVehicle",
new_vehicle: vehcile,

function:executeModeCommand
type: "ExecuteModeCommand",
command: command,

function:executeModuleCommand
type: "ExecuteModuleCommand",
module: module,
command: command,

function:executeToolCommand
type: "ExecuteToolCommand",
tool: tool,
command: command,

function:changeDrivingMode
type: "ChangeDrivingMode",
new_mode: mode,

function:submitDriveEvent
type: "SubmitDriveEvent",
event_time_ms: eventTimeMs,
event_msg: eventMessage,
event_type: eventTypes,

function:sendAudioPiece
type: "AudioPiece",
data: btoa(String.fromCharCode(...data)),

function:toggleSimControl
type: "ToggleSimControl",
enable: enable,

function:requestRoutePath
type: "RequestRoutePath",

function:publishNavigationInfo
this.websocket.send(data);這個function中沒有type是直接send data過去的

--------------------------------offline傳過去的數(shù)值---------------------------------------
type: "requestRoutePath"
recordId: recordId,
frameId: frameId,

最近在看百度無人駕駛Apollo的dreamview模塊的frontend模塊,開始時候考慮找一下數(shù)據(jù)傳輸模塊相關(guān)資料源碼分析的沒有找到,想自己就稍微邊看邊簡單記載了一下
github:https://github.com/smileyqp/Apollo_frontEnd-/blob/master/apollo_frontend.txt

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末舅巷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子河咽,更是在濱河造成了極大的恐慌钠右,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件忘蟹,死亡現(xiàn)場離奇詭異飒房,居然都是意外死亡搁凸,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門狠毯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來护糖,“玉大人,你說我怎么就攤上這事嚼松〉樟迹” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵献酗,是天一觀的道長寝受。 經(jīng)常有香客問我,道長罕偎,這世上最難降的妖魔是什么很澄? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮锨亏,結(jié)果婚禮上痴怨,老公的妹妹穿的比我還像新娘。我一直安慰自己器予,他們只是感情好浪藻,可當(dāng)我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著乾翔,像睡著了一般爱葵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上反浓,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天萌丈,我揣著相機與錄音,去河邊找鬼雷则。 笑死辆雾,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的月劈。 我是一名探鬼主播度迂,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼猜揪!你這毒婦竟也來了惭墓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤而姐,失蹤者是張志新(化名)和其女友劉穎腊凶,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡钧萍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年褐缠,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片划煮。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡送丰,死狀恐怖缔俄,靈堂內(nèi)的尸體忽然破棺而出弛秋,到底是詐尸還是另有隱情,我是刑警寧澤俐载,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布蟹略,位于F島的核電站,受9級特大地震影響遏佣,放射性物質(zhì)發(fā)生泄漏挖炬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一状婶、第九天 我趴在偏房一處隱蔽的房頂上張望意敛。 院中可真熱鬧,春花似錦膛虫、人聲如沸草姻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽撩独。三九已至,卻和暖如春账月,著一層夾襖步出監(jiān)牢的瞬間综膀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工局齿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留剧劝,地道東北人。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓抓歼,卻偏偏與公主長得像讥此,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子锭部,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,044評論 2 355

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