在ROS層面上編寫軟件,需要有相關的工作空間(workspace)。
生成工作控件並不複雜,首先,我們打開一個控制檯(Ctrl+Alt+T),在用戶路徑下信件一個文件夾,我們起名爲LearnROS(也可以起一個自己喜歡的名字)。
然後在這個文件夾中再建立一個文件夾,我們命名爲src;完成後,進入src工作路徑,輸catkin_init_workspace指令初始化工作控件,這會在src文件夾中生成CMakeList。
然後我們進入主路徑,在沒有任何代碼的條件下catkin_make一下,觀察現象:
完整的操作的指令如下:
mkdir LearnROS cd LearnROS/ mkdir src cd src catkin_init_workspace cd .. catkin_make cd src
完成這些操作後,我們發現,在LearnROS路徑下生成了3個文件夾:build,devel和src。
build文件夾存放了Makefile文件,是catkin自動生成的編譯配置文件
devel路徑下存放了生成的可執行文件,也就是ROS運行的節點文件(類似於windows下的exe),在沒有源代碼的情況下,它是空的。
src中存放了我們創作的源文件和頭文件,我們所有的代碼也都是在src這個文件夾中完成的。
接下來,我們在ROS中拷入一個完整的軟件包,編譯看看:
首先,在github網站上隨便找一個導航包:https://github.com/ros-planning/navigation
控制檯中輸入:git clone https://github.com/ros-planning/navigation,就可以將navigation包複製到src路徑下。
當然,也可以用我精簡的導航包,package的數量被精簡爲4個,包含了移植後的A*算法,這個編譯起來會快很多。
切換到LearnROS目錄下,輸入:catkin_make,等待編譯。編譯過程中可能會提示缺少SDL_image包的錯誤,大家可以自己想解決方案,如果無法解決可以在評論區留言。
等待幾分鐘,編譯完成!
打開devel/lib/文件夾,發現生成了可執行文件,也就是node節點文件,這就說明編譯成功了!