前言?
對(duì)于ROS機(jī)器人項(xiàng)目來(lái)說(shuō),運(yùn)行的環(huán)境可能各不相同,有的需要在Ubuntu18.04下運(yùn)行,有的需要在Ubuntu20.04下運(yùn)行。運(yùn)行環(huán)境的改變,產(chǎn)生使用Docker配置環(huán)境的需求。本人以港科大FUEL的項(xiàng)目為例,嘗試在Docker上安裝ROS-Melodic,并運(yùn)行該無(wú)人機(jī)項(xiàng)目。在本文中,會(huì)引用到很多的鏈接,因?yàn)楸苊庵貜?fù)造論子,本人將踩了一路的坑總結(jié)在文章中,并找到了相應(yīng)的解決辦法,供讀者參考,解決辦法以文字或鏈接的形式在文中體現(xiàn),大家按順序運(yùn)行即可。
?一)Docker內(nèi)運(yùn)行ROS(melodic版本)
1.1? Docker的安裝與配置
如果安裝好了Docker,本節(jié)可以跳過(guò)。
對(duì)于Docker的安裝和相關(guān)配置,可以參考本人的文章。手把手教你使用Docker安裝Ubuntu18.04_豬豬的超超的博客-CSDN博客本文詳講解Docker安裝以及相應(yīng)的配置,如取消root權(quán)限,開(kāi)機(jī)自啟動(dòng),阿里云加速等。最后以安裝Ubuntu18.04為例,講解了如何使用Docker進(jìn)行環(huán)境的搭建。https://blog.csdn.net/weixin_65688914/article/details/133514201?spm=1001.2014.3001.5501需要注意的是,大家不需要再去安裝Ubuntu18.04,因?yàn)橛写笊褚呀?jīng)做好了Ubuntu18.04環(huán)境下且安裝好了ROS(melodic版本)的鏡像,大家只需要去拉取下面這個(gè)鏡像:
osrf/ros:melodic-desktop-full
1.2? Docker拉取并配置ROS鏡像
安裝好Docker之后,我們需要使用Docker工具拉取大神制作的ROS鏡像,參考下面博客即可:
Docker內(nèi)運(yùn)行ROS(melodic版本)以及使用Rviz_docker ros代碼在宿主機(jī)運(yùn)行-CSDN博客Docker內(nèi)運(yùn)行ROS(melodic版本)以及使用Rviz寫(xiě)在前文Docker的安裝以及介紹本文就不再累述了,安裝Docker的版本任意,但是要注意的一點(diǎn)是你是ARM板子還是x86的板子,一般在ARM板上實(shí)現(xiàn)上述功能較為麻煩,如果是在ARM板子上使用Docker+ROS的話可以參考這篇文章http://wiki.ros.org/docker/Tutorials/Hardware%20Acceleration#nvidia-docker1在ROS的官網(wǎng)上有教程,但是還是有些坑的,如果你使用的是Nvi_docker ros代碼在宿主機(jī)運(yùn)行https://blog.csdn.net/qq_40695642/article/details/117607446
1.3? 一個(gè)問(wèn)題的解決方案
警告:對(duì)Linux不熟悉的人慎重使用,為保險(xiǎn)起見(jiàn),你最好選擇docker下的容器linux系統(tǒng)開(kāi)發(fā)。如果在容器內(nèi)也出現(xiàn)如下的問(wèn)題,解決方法如下:
【警告或報(bào)錯(cuò)問(wèn)題】:XDG_RUNTIME_DIR not set, defaulting to ‘/tmp/runtime-root‘
1)在/etc/profile末尾增加兩句
export XDG_RUNTIME_DIR=/usr/lib/
export RUNLEVEL=3
2)然后刷新全局變量
source /etc/profile
二)Ubuntu容器環(huán)境配置
2.1? 安裝Openssh
sudo apt-get update ##(更新軟件源)執(zhí)行安裝操作,如果不成功,執(zhí)行第2行指令
sudo apt-get upgrade ##(繼續(xù)更新軟件源)執(zhí)行安裝操作,應(yīng)該能成功
sudo apt-get install -y openssh-server
2.2? 配置Github的SSH密鑰
我們先使用git clone [通過(guò)ssh協(xié)議拉取倉(cāng)庫(kù)],如果出現(xiàn)下面的問(wèn)題,參考該博客即可解決。
解決方案:Permission denied (publickey). fatal: Could not read from remote repository.https://www.cnblogs.com/wmr95/p/7852832.html在配置完成之后,我們就能使用我們的Docker下的ROS(Melodic版本)的容器,來(lái)運(yùn)行項(xiàng)目啦。
三)運(yùn)行HKUST的無(wú)人機(jī)項(xiàng)目
我們以香港科技大學(xué)的一個(gè)無(wú)人機(jī)項(xiàng)目為例進(jìn)行說(shuō)明。
GitHub - HKUST-Aerial-Robotics/FUEL: An Efficient Framework for Fast UAV ExplorationAn Efficient Framework for Fast UAV Exploration . Contribute to HKUST-Aerial-Robotics/FUEL development by creating an account on GitHub.https://github.com/HKUST-Aerial-Robotics/FUEL我們先在docker容器中,新建一個(gè)文件夾用來(lái)克隆該項(xiàng)目。
mkdir HKUST_FUEL
隨后,我們根據(jù)github上的README文件進(jìn)行操作即可
3.1? 安裝依賴項(xiàng)
sudo apt-get install libarmadillo-dev ros-melodic-nlopt
3.2 編譯源文件
新建src文件夾(用以catkin_make編譯),遠(yuǎn)程拉取倉(cāng)庫(kù)到本地
在終端依次輸入如下指令
cd ${YOUR_WORKSPACE_PATH}/src
git clone git@github.com:HKUST-Aerial-Robotics/FUEL.git
cd ../
catkin_make
3.3? 解決catkin_make出現(xiàn)的問(wèn)題
【問(wèn)題】:cannot find -ldw
意思是找不到相應(yīng)的包,因此我們需要再去安裝一下相關(guān)的包
我們依次輸入如下指令,安裝好所缺的包
apt install libdw-dev
apt install libssl-dev
再去編譯,在終端輸入catkin_make,就可以完成編譯啦!?
3.4? 運(yùn)行項(xiàng)目
我們打開(kāi)兩個(gè)終端,分別進(jìn)入到docker容器中
在兩個(gè)終端都輸入如下指令
docker exec -it rocker bash????????#以交互的方式運(yùn)行容器
在兩個(gè)終端中,都 cd 到我們運(yùn)行項(xiàng)目的文件夾
在第一個(gè)終端輸入:
source devel/setup.bash && roslaunch exploration_manager rviz.launch
在第二個(gè)終端輸入:
source devel/setup.bash && roslaunch exploration_manager exploration.launch
?就可以看到電腦打開(kāi)了rviz,并正在運(yùn)行項(xiàng)目啦,我們點(diǎn)擊右上角的?2D NAV Goal?,然后在地圖中點(diǎn)擊一下,就能看到無(wú)人機(jī)的建圖過(guò)程啦!
?四)存在的一些問(wèn)題及改進(jìn)方案
4.1? 問(wèn)題一:rviz卡頓
項(xiàng)目能正常運(yùn)行了,但是存在一個(gè)問(wèn)題,就算rviz節(jié)目較為卡頓,而且點(diǎn)擊最小化之后,rviz直接卡了,讀者不妨試一試。這是因?yàn)閐ocker占用和依賴的是本機(jī)的顯卡資源,通過(guò)X協(xié)議在電腦中展現(xiàn)rviz的圖像化界面。因此在運(yùn)行項(xiàng)目時(shí),需要注意不要將rviz最小化。
4.2? 問(wèn)題二:打開(kāi)多個(gè)終端煩瑣
在3.4中,我們運(yùn)行項(xiàng)目的時(shí)候需要打開(kāi)兩個(gè)終端,過(guò)程非常的煩瑣,由于機(jī)器人項(xiàng)目經(jīng)常需要打開(kāi)多個(gè)終端,為了解決這個(gè)問(wèn)題,對(duì)于本機(jī)來(lái)說(shuō),有實(shí)用的軟件Terminator。
對(duì)于Docker來(lái)說(shuō)呢,向讀者推薦Tmux,感興趣的讀者可以參考。
Tmux教程 (一文就夠)_LYF0816LYF的博客-CSDN博客Tmux1. Tmux是什么?1.1 基本概念1.2 安裝2. session操作2.1 啟動(dòng)2.2 分離2.3 退出2.4 綁定、解綁、切換session2.5 重命名session3. window操作3.1 新建窗口tmux new-window3.2 切換窗口3.3 重命名窗口4. pane操作4.1 劃分窗格4.2 光標(biāo)位置4.4 關(guān)閉窗格5. 其他操作5.1 tmux上下翻屏使用教程網(wǎng)上相關(guān)的Tmux教程很多,可是看完感覺(jué)不是太細(xì)就是太散,有一些不常用的操作、快捷鍵也寫(xiě)出來(lái)了,感覺(jué)重點(diǎn)不夠突出_tmux教程https://blog.csdn.net/CSSDCC/article/details/121231906文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-734332.html
總結(jié)
本文詳細(xì)講解了如何在Docker中運(yùn)行ROS項(xiàng)目,并以香港科技大學(xué)的無(wú)人機(jī)項(xiàng)目為例,進(jìn)行解釋說(shuō)明。旨在手把手教會(huì)讀者上手Docker,并成功運(yùn)行一個(gè)ROS機(jī)器人項(xiàng)目。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-734332.html
到了這里,關(guān)于在Docker上運(yùn)行ROS(melodic版本)機(jī)器人項(xiàng)目的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!