ROS官網初級教程學習總結(1-4)
安裝並配置ROS環境
安裝ROS
安裝時記得換個好點的軟體源,要不然會因為網路連線問題一直失敗。
管理環境
export | grep ROS
主要是檢視環境變數是否設定。
ROSLISP_PACKAGE_DIRECTORIES=”” //這個是關於lisp語言的
ROS_DISTRO=”kinetic”
ROS_ETC_DIR=”/opt/ros/kinetic/etc/ros” //一些配置檔案
ROS_MASTER_URI=”http://localhost:11311” //master地址,遠端連線時有用
ROS_PACKAGE_PATH=”/opt/ros/kinetic/share” //ROS包的環境變數
ROS_ROOT=”/opt/ros/kinetic/share/ros” //ROS core包的位置
建立ROS工作空間
建立一個新的catkin工作空間後,source一下新生成的setup.*sh檔案(source devel/setup.bash
), 在當前shell下執行echo $ROS_PACKAGE_PATH
會看到ROS_PACKAGE_PATH環境變數已包含你新建的工作空間程式包目錄。
ROS檔案系統介紹
安裝程式包
直接使用apt-get安裝,如安裝ros-tutorials:
$ sudo apt-get install ros-<distro>-ros-tutorials
快速瞭解檔案系統概念
Packages: 軟體包,ROS應用程式程式碼的組織單元,每個軟體包都可以包含程式庫、可執行檔案、指令碼或者其它手動建立的東西。
Manifest (package.xml,軟體包的根目錄下): 清單,是對於’軟體包’相關資訊的描述,用於定義軟體包相關元資訊之間的依賴關係,這些資訊包括版本、維護者和許可協議等。
檔案系統工具
程式程式碼是分佈在眾多ROS軟體包當中,當使用命令列工具(比如ls和cd)來瀏覽時會非常繁瑣,因此ROS提供了專門的命令工具來簡化這些操作。
rospack
# rospack find [包名稱]
:返回軟體包的路徑資訊。
roscd
直接切換(cd)工作目錄到某個軟體包或者軟體包集當中。
# roscd [本地包名稱[/子目錄]]
roscd log
切換到ROS儲存日記檔案的目錄下。
rosls
rosls [本地包名稱[/子目錄]]
:直接按軟體包的名稱而不是絕對路徑執行ls命令。
Tab 自動補全輸入
建立ROS程式包
catkin程式包的構成
- 必須包含catkin compliant package.xml檔案。這個package.xml檔案提供有關程式包的元資訊。
- 必須包含一個catkin 版本的CMakeLists.txt檔案
- 每個目錄下只能有一個程式包
最簡單的程式包也許就像這樣:
my_package/
CMakeLists.txt
package.xml
catkin工作空間
一個簡單的工作空間也許看起來像這樣:
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
建立一個catkin程式包
# catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
程式包依賴關係
一級依賴
$ rospack depends1 <package_name>
間接依賴
$ rospack depends <package_name>
自定義程式包
自定義 package.xml
描述標籤
<description>
維護者標籤
<maintainer
許可標籤
<license>
依賴項標籤
<build_depend>
<buildtool_depend>
<run_depend>
<test_depend>
自定義 CMakeLists.txt
編譯ROS程式包
使用 catkin_make
catkin_make 是一個命令列工具,你可以認為catkin_make是在CMake標準工作流程中依次呼叫了cmake 和 make。
$ catkin_make [make_targets] [-DCMAKE_VARIABLES=...]
catkin_make
會編譯src資料夾下的所有catkin工程。
開始編譯你的程式包
執行完catkin_make
後,使用ls
檢視:
build //cmake 和 make是在這裡被呼叫來配置並編譯你的程式包。
devel //在你安裝程式包之前存放可執行檔案和庫檔案的地方
src