catkin 工作空間 - Package 組成
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 組成