ros入門 5 ros中的一些編譯彙總

2021-08-20 08:07:53 字數 2081 閱讀 6383

主要介紹ros中庫的編譯以及呼叫,第三方so庫的呼叫,依賴其他package中messages/services/actions檔案(需要msg.h等先生成)的問題。

庫名稱為autodrive_common,對應標頭檔案在include目錄下,需要在catkin_package中新增include_dirs和libraries,表示當前package(autodrive_common)對外提供的庫以及標頭檔案。

project

(autodrive_common)

catkin_package

(include_dirs include

libraries autodrive_common)

新增庫相關編譯,庫由string_tokenizer.cc生成。

add_library

(autodrive_common src/string_tokenizer.cc)

如何呼叫libautodrive_common.so?

在package.xml中新增對autodrive_common package的build和run depend,

autodrive_commonbuild_depend>

autodrive_commonrun_depend>

在需要呼叫庫的package的cmakelists.txt中在find_package中將autodrive_common作為catkin的components,然後就可以找到autodrive_common對外export的標頭檔案$和庫$

find_package( catkin required components

autodrive_common)

include_directories(

include$)

target_link_libraries(planning_node $)

對某些不開源的第三方庫的使用,例如libcancmd.so,將其放到package下的lib目錄下,標頭檔案放置在include目錄下,

#找到頭檔案目錄

include_directories(

include

)#指定庫所在的目錄

link_directories(lib)

#應用程式prog鏈結cancmd庫

target_link_libraries(prog cancmd )

對於將msg統一放在乙個package中進行管理的情況,其他package在編譯時需要先將該msg對應的package先編譯生成對應的標頭檔案。假如專門管理msg的package名為msgpackage。

#利用find_package將msgpackage設定為catkin的components,

find_package(catkin required components msgpackage)

add_executable(message_program src/main.cpp)

#設定message_program的依賴為$

add_dependencies(message_program $)

那麼$是什麼?在cmakelists.txt中我們可以利用message()函式去debug,例如,

都是些形如package_name_generage_messages_cpp的flag,所以對msg/service等的依賴,既可以使用package_name_generage_messages_cpp這種形式,也可以一勞永逸的通過find_packagecatkin_exported_targets進行設定。

ros中的一些感測器

1imu.msg 陀螺儀資料 加速度m s2,旋轉速度rad s,1 header header 時間戳與座標系 2 geometry msgs quaternion orientation 四元數表示方向 3 float64 9 orientation covariance協方差 4 geomet...

ROS入門 5 深入了解ROS話題通訊機制的過程

乙個節點需要與系統中其他節點進行通訊才有意義,系統中任何單獨的乙個節點其實都是沒有意義的。下圖是乙個話題通訊的過程示意圖,乙個節點通過節點管理器連線到另乙個節點,最終請求話題資料流。ps 在ros中有兩個節點 乙個是發布者talker,另乙個是訂閱者listener,兩個節點分別發布 訂閱同乙個話題...

用ROS遇到的一些問題

原本是想用ros控制機械臂,後來突發奇想,想通過rand函式產生隨機數,來讓機械臂隨便動,於是寫了如下一小段 include 可以傳送軌跡的 include include ros time.h include ros publisher arm pub int main int argc,char...