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