本發(fā)明涉及自動駕駛通信,尤其涉及一種用于自動駕駛的數(shù)據(jù)通信系統(tǒng)。
背景技術(shù):
1、當前的自動駕駛通信系統(tǒng)中,通常采用機器人操作系統(tǒng)(robot?operatingsystem,簡稱ros)或二代ros(簡稱ros2)實現(xiàn)數(shù)據(jù)通信。由于ros/ros2是用于單個節(jié)點與節(jié)點之間的通信工具,在多節(jié)點跨機傳輸?shù)臅r候會產(chǎn)生重復帶寬問題。
2、具體而言,重復帶寬問題可以指:在跨機的每兩個節(jié)點之間進行數(shù)據(jù)傳輸時,采用了多份帶寬資源傳輸相同的數(shù)據(jù),這就導致有限的帶寬資源被重復浪費,尤其是在自動駕駛應用場景中,功能節(jié)點數(shù)量、種類繁多,且不同節(jié)點間跨機數(shù)據(jù)通信非常頻繁,重復帶寬問題會導致自動駕駛網(wǎng)絡(luò)負載和資源消耗的大大增加。
3、此外,ros2通常采用單一線程(或進程)執(zhí)行本機傳輸和跨機傳輸?shù)榷囗棽僮?,具體而言,針對相同的待發(fā)布數(shù)據(jù),ros2通過單個線程執(zhí)行將該待發(fā)布數(shù)據(jù)傳輸至本機的其他各訂閱節(jié)點,以及將該待發(fā)布數(shù)據(jù)跨機傳輸至其他主機的各訂閱節(jié)點等多項操作,導致本機傳輸和跨機傳輸之間相互影響,例如,本機傳輸?shù)男屎头€(wěn)定性可能會受到跨機傳輸?shù)木W(wǎng)絡(luò)狀態(tài)的影響。
技術(shù)實現(xiàn)思路
1、本發(fā)明實施例解決的技術(shù)問題如何減少自動駕駛通信系統(tǒng)中多節(jié)點跨機數(shù)據(jù)傳輸?shù)膸捹Y源浪費,整體提高自動駕駛數(shù)據(jù)通信的效率和穩(wěn)定性。
2、為解決上述技術(shù)問題,本發(fā)明實施例提供一種用于自動駕駛的數(shù)據(jù)通信方法,包括:數(shù)據(jù)發(fā)送端,所述數(shù)據(jù)發(fā)送端包括:發(fā)送端數(shù)據(jù)發(fā)布節(jié)點,用于發(fā)布待發(fā)布數(shù)據(jù);發(fā)送端數(shù)據(jù)訂閱節(jié)點,用于在確認有待發(fā)布數(shù)據(jù)時,獲取所述待發(fā)布數(shù)據(jù);數(shù)據(jù)跨機發(fā)送模塊,用于在確認有待發(fā)布數(shù)據(jù)時,確定所述待發(fā)布數(shù)據(jù)的目標數(shù)據(jù)類型及目標主題,并確定所述目標數(shù)據(jù)類型及目標主題對應的數(shù)據(jù)傳輸通道,采用該數(shù)據(jù)傳輸通道傳輸所述待發(fā)布數(shù)據(jù),其中,數(shù)據(jù)類型及主題的組合與數(shù)據(jù)傳輸通道具有一一對應關(guān)系;數(shù)據(jù)接收端,所述數(shù)據(jù)接收端包括:數(shù)據(jù)跨機接收模塊,用于從所述目標數(shù)據(jù)類型及目標主題對應的數(shù)據(jù)傳輸通道接收所述待發(fā)布數(shù)據(jù);多個接收端數(shù)據(jù)訂閱節(jié)點,用于從所述數(shù)據(jù)跨機接收模塊獲取所述待發(fā)布數(shù)據(jù);其中,所述發(fā)送端數(shù)據(jù)發(fā)布節(jié)點和所述多個接收端數(shù)據(jù)訂閱節(jié)點通過所述目標數(shù)據(jù)類型及目標主題進行關(guān)聯(lián)。
3、可選的,所述數(shù)據(jù)發(fā)送端還包括第一共享內(nèi)存;所述發(fā)送端數(shù)據(jù)發(fā)布節(jié)點,還用于將待發(fā)布數(shù)據(jù)寫入所述第一共享內(nèi)存;所述發(fā)送端數(shù)據(jù)訂閱節(jié)點,用于在確認所述第一共享內(nèi)存有待發(fā)布數(shù)據(jù)時,從所述第一共享內(nèi)存讀取所述待發(fā)布數(shù)據(jù);所述數(shù)據(jù)跨機發(fā)送模塊,用于在確認所述第一共享內(nèi)存有待發(fā)布數(shù)據(jù)時,從所述第一共享內(nèi)存讀取所述待發(fā)布數(shù)據(jù),然后執(zhí)行確定所述待發(fā)布數(shù)據(jù)的數(shù)據(jù)傳輸通道及采用該數(shù)據(jù)傳輸通道傳輸所述待發(fā)布數(shù)據(jù)的步驟。
4、可選的,所述第一共享內(nèi)存被劃分為多個第一內(nèi)存塊,數(shù)據(jù)類型及主題的組合與第一內(nèi)存塊一一對應;將待發(fā)布數(shù)據(jù)寫入所述第一共享內(nèi)存,包括:確定所述待發(fā)布數(shù)據(jù)的目標數(shù)據(jù)類型及目標主題;將所述待發(fā)布數(shù)據(jù)寫入所述目標數(shù)據(jù)類型及目標主題對應的第一內(nèi)存塊。
5、可選的,所述數(shù)據(jù)接收端還包括:第二共享內(nèi)存;所述數(shù)據(jù)跨機接收模塊還用于將所述待發(fā)布數(shù)據(jù)寫入所述第二共享內(nèi)存;其中,所述發(fā)送端數(shù)據(jù)發(fā)布節(jié)點關(guān)聯(lián)的各個接收端數(shù)據(jù)訂閱節(jié)點分別從所述第二共享內(nèi)存讀取所述待發(fā)布數(shù)據(jù)。
6、可選的,所述第二共享內(nèi)存被劃分為多個第二內(nèi)存塊,數(shù)據(jù)類型及主題的組合與第二內(nèi)存塊一一對應;將所述待發(fā)布數(shù)據(jù)寫入所述第二共享內(nèi)存包括:確定所述待發(fā)布數(shù)據(jù)的目標數(shù)據(jù)類型及目標主題;將所述待發(fā)布數(shù)據(jù)寫入所述目標數(shù)據(jù)類型及目標主題對應的第二內(nèi)存塊;其中,所述發(fā)送端數(shù)據(jù)發(fā)布節(jié)點關(guān)聯(lián)的各個接收端數(shù)據(jù)訂閱節(jié)點從所述第二內(nèi)存塊讀取所述待發(fā)布數(shù)據(jù)。
7、可選的,所述數(shù)據(jù)發(fā)送端包括的發(fā)送端數(shù)據(jù)訂閱節(jié)點的數(shù)量為多個,每個發(fā)送端數(shù)據(jù)訂閱節(jié)點具有各自關(guān)聯(lián)的數(shù)據(jù)類型及主題,多個發(fā)送端數(shù)據(jù)訂閱節(jié)點與多個預創(chuàng)建的協(xié)程一一對應,其中,當協(xié)程處于運行狀態(tài)時,該協(xié)程對應的發(fā)送端數(shù)據(jù)訂閱節(jié)點獲取具有關(guān)聯(lián)的數(shù)據(jù)類型及主題的待發(fā)布數(shù)據(jù),當協(xié)程處于掛起狀態(tài)時,該協(xié)程對應的發(fā)送端數(shù)據(jù)訂閱節(jié)點停止獲取所述待發(fā)布數(shù)據(jù);所述數(shù)據(jù)發(fā)送端的各個發(fā)送端數(shù)據(jù)訂閱節(jié)點對應的協(xié)程是依照喚醒隊列指示的協(xié)程先后順序運行的;其中,每當當前運行的協(xié)程對應的發(fā)送端數(shù)據(jù)訂閱節(jié)點獲取完成所述待發(fā)布數(shù)據(jù)時,掛起當前運行的協(xié)程,然后運行所述喚醒隊列中順序在后的下一個協(xié)程。
8、可選的,所述喚醒隊列采用下述方式確定:每當確認有新的待發(fā)布數(shù)據(jù)時,確定所述待發(fā)布數(shù)據(jù)的目標數(shù)據(jù)類型及目標主題,然后確定所述目標數(shù)據(jù)類型及目標主題關(guān)聯(lián)的所有發(fā)送端數(shù)據(jù)訂閱節(jié)點,記為目標訂閱節(jié)點;喚醒各個目標訂閱節(jié)點對應的被掛起的協(xié)程,并依照被喚醒的先后順序?qū)⒏鲄f(xié)程放入所述喚醒隊列,喚醒順序在先的協(xié)程在所述喚醒隊列的順序越靠前。
9、可選的,運行所述喚醒隊列中的順序在后的下一個協(xié)程,包括:對當前運行的協(xié)程的cpu寄存器狀態(tài)進行另存為處理;將所述下一個協(xié)程的cpu寄存器狀態(tài)加載至cpu寄存器。
10、可選的,所述數(shù)據(jù)發(fā)送端還包括網(wǎng)絡(luò)棧;所述采用該數(shù)據(jù)傳輸通道傳輸所述待發(fā)布數(shù)據(jù),包括:將所述待發(fā)布數(shù)據(jù)寫入網(wǎng)絡(luò)棧,然后從所述網(wǎng)絡(luò)棧讀取所述待發(fā)布數(shù)據(jù)并發(fā)送至該數(shù)據(jù)傳輸通道。
11、可選的,所述數(shù)據(jù)發(fā)送端還包括:監(jiān)測模塊,用于對所述數(shù)據(jù)傳輸通道的數(shù)據(jù)傳輸參數(shù)進行實時監(jiān)測,所述數(shù)據(jù)傳輸參數(shù)選自以下一項或多項:數(shù)據(jù)傳輸頻率、數(shù)據(jù)傳輸時延、數(shù)據(jù)傳輸流量;告警模塊,用于根據(jù)所述監(jiān)測模塊的監(jiān)測結(jié)果,發(fā)出對應的告警指示信號;其中,監(jiān)測的數(shù)據(jù)傳輸頻率小于預設(shè)頻率閾值和/或數(shù)據(jù)傳輸流量小于預設(shè)流量閾值時,對應的告警指示信號用于指示所述數(shù)據(jù)傳輸通道存在數(shù)據(jù)丟包;監(jiān)測的數(shù)據(jù)傳輸時延大于預設(shè)時延閾值時,對應的告警指示信號用于指示所述數(shù)據(jù)傳輸通道的帶寬超過網(wǎng)卡限制或者存在網(wǎng)絡(luò)故障。
12、與現(xiàn)有技術(shù)相比,本發(fā)明實施例的技術(shù)方案具有以下有益效果:
13、相較于現(xiàn)有常規(guī)的自動駕駛通信系統(tǒng)在每兩個節(jié)點之間均會創(chuàng)建對應的數(shù)據(jù)傳輸通道,導致帶寬資源的重復占用和浪費問題,本發(fā)明實施例在“數(shù)據(jù)類型+主題”的組合與數(shù)據(jù)傳輸通道之間建立一一對應關(guān)系,并在自動駕駛通信系統(tǒng)的數(shù)據(jù)發(fā)送端特別設(shè)置數(shù)據(jù)跨機發(fā)送模塊,該模塊在確定發(fā)送端數(shù)據(jù)發(fā)布節(jié)點的待發(fā)布數(shù)據(jù)的目標數(shù)據(jù)類型及目標主題后,確定所述目標數(shù)據(jù)類型及目標主題對應的單個數(shù)據(jù)傳輸通道,然后采用該單個數(shù)據(jù)傳輸通道傳輸所述待發(fā)布數(shù)據(jù);相應地,數(shù)據(jù)接收端的、訂閱了所述目標數(shù)據(jù)類型及目標主題的多個接收端數(shù)據(jù)訂閱節(jié)點,均可以獲取來自該單個數(shù)據(jù)傳輸通道的所述待發(fā)布數(shù)據(jù)。由此,不論數(shù)據(jù)接收端訂閱節(jié)點的數(shù)量有多少個,只要訂閱了相同“數(shù)據(jù)類型+主題”的數(shù)據(jù),均可采用唯一對應的數(shù)據(jù)傳輸通道(即,單個數(shù)據(jù)傳輸通道)實現(xiàn)跨機數(shù)據(jù)傳輸,大幅減少帶寬資源的浪費,進而整體上提高自動駕駛通信效率和穩(wěn)定性。
14、進一步,在自動駕駛領(lǐng)域,為滿足不同駕駛場景的需求,同一種類型的數(shù)據(jù)往往需要被劃分為不同的主題。因此,相較于僅對“數(shù)據(jù)類型”與數(shù)據(jù)傳輸通道綁定(即,采用單個數(shù)據(jù)傳輸通道傳輸同一數(shù)據(jù)類型下的多個主題的數(shù)據(jù)),本實施方案對“數(shù)據(jù)類型+主題”的組合與數(shù)據(jù)傳輸通道一一綁定,可以有效提高數(shù)據(jù)傳輸?shù)男始皶r效性,有利于滿足更豐富的自動駕駛場景需求,并保障自動駕駛的安全性。