寫在前面:本文為原創(chuàng)硕蛹,如需轉(zhuǎn)載請(qǐng)注明出處(http://www.reibang.com/p/e9981bc35cff)刷晋。歡迎大家留言共同探討奢浑,有誤的地方也希望指出饮焦。另如果有好的SLAM、ROS等相關(guān)交流群也希望可以留言給我拒垃,在此先謝過(guò)了停撞。
1 Error描述
在用launch文件進(jìn)行amcl定位運(yùn)行時(shí)出現(xiàn)故障,截圖如下:
ERROR: cannot launch node of type [map_server/map_server]: can't locate node [map_server] in package [map_server]
從故障描述來(lái)看是在包Map_server中無(wú)法找到map_server節(jié)點(diǎn)悼瓮。于是動(dòng)手開(kāi)始排查問(wèn)題戈毒。
2 Error排查
檢查launch文件關(guān)于map_server的部分,沒(méi)有發(fā)現(xiàn)問(wèn)題谤牡。截圖如下:
然后想到用
roscd
指令進(jìn)行map_server包的定位,看看是否在指定位置姥宝,運(yùn)行結(jié)果如下:發(fā)現(xiàn)可以找到正確位置的map_server包翅萤,暫時(shí)無(wú)頭緒,于是進(jìn)行搜索,在rosrun map_server map_server couldn't find executable中找到了比較靠譜的回答套么。
3 原因及解決
在上述連接的回答中培己,回答者提到了是由于在自己的workspace中有同名的包,當(dāng)使用source /devel/setup.bash
命令后胚泌,rosrun
會(huì)指向自己同名的map_server包省咨,因此當(dāng)然就無(wú)法找到了。而且迷惑人的是玷室,在source后使用roscd
命令查找map_server包還是會(huì)指向系統(tǒng)中安裝的位置零蓉,而不是另一個(gè)workspace包的位置。這就導(dǎo)致了較難發(fā)現(xiàn)同名包的問(wèn)題穷缤。
回答者使用了命令catkin_find --without-underlays --libexec --share map_server
找出了同名包的位置敌蜂,我運(yùn)行后的截圖如下:
上兩圖可以明顯看出位置的區(qū)別章喉,我是之前用源碼編譯了navigation包,又用sudo apt 安裝了navigation包身坐,導(dǎo)致了兩個(gè)同名包的存在的問(wèn)題秸脱。刪除了第二幅圖片中的map_server后運(yùn)行l(wèi)aunch文件,可以正常運(yùn)行了部蛇,問(wèn)題解決@@