1. 程式人生 > >catkin 工作空間 - Package 組成

catkin 工作空間 - Package 組成

編譯 動作 維護 eat config mage name too ges

package 是 ROS 軟件的基本組織形式,ROS 就是由一個個的 package 組成的

package 是 catkin 的編譯基本單元

一個 package 可以包含多個可執行文件(節點)

package 下要包含這兩個文件 CMakeLists.txt、package.xml

CMakeLists.txt 規定 catkin 編譯的規則,例如:源文件、依賴項、目標文件

cmake_minimum_required()  # 指定 catkin 最低版本
project()  # 指定軟件包的名稱
find_package()  # 指定編譯時需要的依賴項
add_message_files()  # 添加消息文件
add_service_files()  # 添加服務文件
add_action_files()  # 添加動作文件
generate_messages()  # 生成消息、服務、動作
catkin_package()  # 指定 catkin 信息給編譯系統生成 Cmake 文件
add_library()  # 指定生成庫文件
add_executable()  # 指定生成可執行文件
target_link_libraries()  # 指定可執行文件去鏈接哪些庫
catkin_add_gtest()  # 添加測試單元
install()  # 生成可安裝目標

package.xml:定義 package 的屬性,例如:包名、版本號、作者、依賴等

<package>       <!--根標簽-->
	<name>      <!--包名-->
	<version>   <!--版本號-->
	<description>   <!--包描述-->
	<maintainer>   <!--維護者-->
	<license>   <!--軟件許可-->
	<buildtool_depend>   <!--編譯工具-->
	<build_depend>   <!--編譯時的依賴-->
	<run_depend>   <!--運行時的依賴-->  
</package>      <!--根標簽-->

代碼文件:

package:CMakeLists.txt、package.xml、script(放 shell 腳本或 python 腳本)、include(放 C 的頭文件 .h)、src(放 C 的源文件.cpp,也能放 python 的源文件)

自定義通信格式:

消息(msg)、服務(srv)、動作(action)

package:CMakeLists.txt、package.xml、msg(存放 .msg 文件)、srv(存放 .srv 文件)、action(存放 .action 文件)

launch 以及配置文件:

launch文件(launch)、配置文件(yaml)

package:CMakeLists.txt、package.xml、config(.yaml)、launch(.lanuch)

常用的包管理指令:

創建一個 package:catkin_creat_pkg <pkg_name> [deps]

技術分享圖片

std_msgs 為通信的依賴,nav_msgs 為導航的依賴

查找某個 package 的地址:rospack find package_name

技術分享圖片

列出本地所有的 package:rospack list

sch01ar@ubuntu:~$ rospack list

跳轉到某個 package 路徑下:roscd package_name

技術分享圖片

列舉某個 package 下的文件信息:rosls package_name

技術分享圖片

編輯 package 中的文件:rosed package_name file_name

sch01ar@ubuntu:~$ rosed test CMakeLists.txt

安裝某個 package 所需的依賴:rosdep install [package_name]

技術分享圖片

catkin 工作空間 - Package 組成