【ROS】建立工作空間和程式包
要使用ROS系統進行開發,首先需要在ROS下建立工作空間(workspace)和程式包(package)。
建立工作空間:
$ mkdir -p ~/catkin_ws/src
執行上述命令即在使用者主目錄下建立了catkin_ws資料夾及其子資料夾src(-p表示建立目標路徑上的所有資料夾)。此時,catkin_ws即為你的工作空間,src為存放程式包的資料夾(src可以存放多個程式包)。
下面切換到工作空間下,並對其進行編譯(工作空間下沒有任何程式包依然可以進行編譯):
$ cd ~/catkin_ws/
$ catkin_make
此時,會發現catkin_ws資料夾下除了src,又多出兩個資料夾build和devel。build資料夾是
為了確保ROS_PACKAGE_PATH環境變數包含你的工作空間目錄,採用以下命令檢視:
$ echo $ROS_PACKAGE_PATH
若返回以下資訊:(我安裝的ROS是kinetic版本)
/home/你的使用者名稱/你的工作空間名/src:/opt/ros/kinetic(ROS的版本名)/share
則表示你的工作變數已經配置正確。
接下來在src資料夾中建立一個新的程式包:
$ cd ~/catkin_ws/src/
$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
執行上述命令後,src資料夾下就會出現一個新資料夾beginner_tutorials和一個新檔案CMakeList.txt,beginner_tutorials即為我們新建的程式包,該資料夾下至少包括CMakeList.txt和package.xml兩個檔案。std_msgs、rospy、roscpp為beginner_tutorials的依賴包,其作用相當於一個程式原始檔所需要的標頭檔案。
需要注意的是程式包的目錄不能相互巢狀,即若需要建立一個新的程式包,不能建在beginner_tutorials資料夾下。
由上述的建立過程,我們可以知道,一個工作空間和程式包的典型結構應為:
workspace_folder/ -- WORKSPACE
src/ -- SOURCE SPACE
CMakeLists.txt -- 'Toplevel' CMake file, provided by catkin
package_1/
CMakeLists.txt -- CMakeLists.txt file for package_1
package.xml -- Package manifest for package_1
...
package_n/
CMakeLists.txt -- CMakeLists.txt file for package_n
package.xml -- Package manifest for package_n
devel/
setup.*sh
build/
在工作空間下完成程式包的建立後,再次在工作空間目錄下進行編譯(編譯其中的程式包):
首先source一下你的環境配置檔案:
$ source /opt/ros/kinetic/setup.bash
再在工作空間下編譯程式包:
$ cd ~/catkin_ws/
$ catkin_make
至此,我們就完成了一個新的工作空間和程式包的建立和編譯。