如何確定ROS包的依賴

2021-09-11 23:04:36 字數 2244 閱讀 4890

初學ros遇到的大部分問題,到最後都是簡單的多加了依賴,少加了依賴,這可能會導致編譯不通過,也可能編譯通過但是會有核心轉儲的錯,光看程式完全看不出來問題,浪費了很多時間。所以我打算細緻地整理一下。

參考:

功能包的依賴部分涉及到cmakelist.txt和package.xml兩個檔案。兩個檔案分別要對依賴進行宣告

cmakelist.txt一般為這樣:

cmake_minimum_required(version 2.8.3)

project(cv_bridge_tutorial_pkg)

find_package(catkin required components

cv_bridge

image_transport

roscpp

sensor_msgs

std_msgs

)find_package( opencv required )

catkin_package()

include_directories(

$ $

)add_executable(sample_cv_bridge_node src/sample_cv_bridge_node.cpp)

target_link_libraries(sample_cv_bridge_node$$

)include_directories($ $)

一般來講在ide配置庫主要是兩個部分,乙個是動態鏈結庫,乙個是標頭檔案包含。ros也是這樣。

鏈結庫:

find_package()的作用是讓cmake找到依賴的庫,像boost,opencv這種普遍在用的庫,已經提供了cmake模組,執行時不需要單獨的共享庫,只需要寫成 find_package( opencv required )、find_package(boost required)就可以了。但是有些功能就需要單獨的庫,比如boot執行緒實現以及大部分功能包依賴,寫成find_package(boost required components thread)。 如果沒有cmake模組可用,但是庫的開發包提供了pkg-config檔案。寫成find_package(pkgconfig required)

pkg_check_modules(gstreamer required libgstreamer-0.10)

標頭檔案包含:

include_directories(include $ $)

匯出介面:

catkin_package(0 這裡需要和package.xml的或 一致

傳遞傳遞相容的cmake變數:find_package(boost…)、 catkin_package(depends boost)

內部使用, 沒有生成相容的cmake變數,不在暴露的標頭檔案中 find_package(pythonlibs…) $

一般而言的第三方功能包 只需要依賴其訊息檔案即可 依賴主體節點會有很大的問題。

package.xml

<?xml version="1.0"?>

cood_tran

0.0.0

the cood_tran package

qiuyilin

todo

catkin

darknet_ros_msgs

sensor_msgs

roscpp

cv_bridge

image_transport

std_msgs

darknet_ros_msgs

sensor_msgs

roscpp

cv_bridge

image_transport

std_msgs

darknet_ros_msgs

sensor_msgs

roscpp

cv_bridge

image_transport

std_msgs

構建程式所需要的依賴

其他程式需要build_depend的功能包

用於 shared libraries, executables, python modules, launch scripts and other files required for running your package

不推薦使用

ROS依賴包安裝問題

在ros編譯過程中經常會遇到找不到ros包的情況,如下所示 cmake error at opt ros kinetic share catkin cmake catkinconfig.cmake 83 find package could not find a package configurat...

ROS依賴包查詢安裝

roscd package name rosdep update rosdep package namerosdep即可安裝缺少的依賴項 直接用這個方法就行了 乙個乙個裝太麻煩,我們直接安裝ros乙個功能包所需要的依賴乙個較常使用的命令是 rosdep install from paths src ...

python如何匯入依賴包

第一步 開啟pycharm fwww.cppcns.comile settings 第二步 project 你的專案名 project interpreter 點選右邊的加號 第三步 在視窗中搜尋要 的依賴 選中並點選左下角的install packag程式設計客棧e即可匯入依賴包 內容擴充套件 p...