LCM(傳輸協(xié)議)Warning: Large Packets問(wèn)題

實(shí)驗(yàn)項(xiàng)目做的是 ORB-SLAM2 和 LCM傳輸協(xié)議結(jié)合的課題。在Ubuntu14.04的系統(tǒng)下,配置了多次環(huán)境,但這個(gè)碰到了一個(gè)新的問(wèn)題,折磨了我一段時(shí)間,就是圖1中的Warning。同樣的環(huán)境安裝步驟,同樣的代碼,但是這個(gè)卻翻車了。在傳輸過(guò)程中,接收端始終顯示這個(gè),導(dǎo)致丟包率太高,傳輸不能正常運(yùn)行。

圖1.? LCM Warning

問(wèn)題其實(shí)說(shuō)的很明白了,是傳輸了大的packet,同時(shí)UDP的緩沖區(qū)很小。但是,就是因?yàn)橥瑯拥拇a,但是在別的電腦上就不會(huì)出現(xiàn)這個(gè),在別的電腦上是正常運(yùn)行的。排除了代碼的問(wèn)題,那么想辦法調(diào)大一點(diǎn)UDP緩沖區(qū)的大小。

LCM的作者給出了這個(gè),http://lcm-proj.github.io/multicast_setup.html。參考鏈接中的辦法

圖2? 鏈接中的辦法

也就是去配置文件里調(diào)整緩沖區(qū)的大小。原理我沒(méi)有研究過(guò),這里簡(jiǎn)單點(diǎn)來(lái)看就是改個(gè)數(shù)值。

步驟就是,

sudo vim /etc/sysctl.conf, 進(jìn)入配置文件。

然后在最底下放入上面的兩句話,保存退出就好了。


圖3 修改之后的文件

之后嘗試去運(yùn)行程序,還是報(bào)錯(cuò)。

查驗(yàn)資料之后,

使用 sudo sysctl -a |grep rmem_max 命令,查看rmem_max的值,


圖4 查看結(jié)果

其中 net.core.rmem_max的值是212992,跟我在配置文件里設(shè)置的2097152不一樣。

之后使用 sudo sysctl -p 使配置文件生效。輸入命令之后,會(huì)顯示出下面的兩個(gè)值,可以發(fā)現(xiàn),它們已經(jīng)更新了。


圖5 生效后

之后再使用 sudo sysctl -a |grep rmem_max 命令,查看rmem_max的值,

圖6 生效后再查看

發(fā)現(xiàn)net.core.rmem_max的值已經(jīng)更改了。

再去運(yùn)行程序,LCM warning 已經(jīng)不出現(xiàn)了,程序傳輸正常。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容