實(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)行。

問(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。參考鏈接中的辦法

也就是去配置文件里調(diào)整緩沖區(qū)的大小。原理我沒(méi)有研究過(guò),這里簡(jiǎn)單點(diǎn)來(lái)看就是改個(gè)數(shù)值。
步驟就是,
sudo vim /etc/sysctl.conf, 進(jìn)入配置文件。
然后在最底下放入上面的兩句話,保存退出就好了。

之后嘗試去運(yùn)行程序,還是報(bào)錯(cuò)。
查驗(yàn)資料之后,
使用 sudo sysctl -a |grep rmem_max 命令,查看rmem_max的值,

其中 net.core.rmem_max的值是212992,跟我在配置文件里設(shè)置的2097152不一樣。
之后使用 sudo sysctl -p 使配置文件生效。輸入命令之后,會(huì)顯示出下面的兩個(gè)值,可以發(fā)現(xiàn),它們已經(jīng)更新了。

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

發(fā)現(xiàn)net.core.rmem_max的值已經(jīng)更改了。
再去運(yùn)行程序,LCM warning 已經(jīng)不出現(xiàn)了,程序傳輸正常。