日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ROS总结一,catkin,package,CMakeList,Topic,node

發布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ROS总结一,catkin,package,CMakeList,Topic,node 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ROS系統學習已經有幾周了,但是感覺學的效率有點低。不過還是要把總結先寫了,以盡快進入下一階段學習。

PS:這篇總結主要是根據MOOC網中科院老師的講義來的。
推薦學習,網址:https://www.icourse163.org/learn/ISCAS-1002580008?tid=1002759011#/learn/content?type=detail&id=1003899799&cid=1004769692

  • catkin編譯系統
    catkin的誕生是為了替代rosbuild

    一個Catkin的軟件包( package) 必須要包括兩個文件:

    package.xml: 包括了package的描述信息
    name, description, version, maintainer(s), license
    opt. authors, url’s, dependencies, plugins, etc…

    CMakeLists.txt: 構建package所需的CMake文件
    調用Catkin的函數/宏
    解析 package.xml
    找到其他依賴的catkin軟件包
    將本軟件包添加到環境變量

    catkin的編譯指令為catkin_make。catkin_make一般在創建包之后使用,它可以幫你寫好部分CMakeLists和package.xml的內容,所以每一次包的內容修改之后就catkin_make一下。就像編完代碼要運行之前必須先編譯。catkin_make也可以有一些參數如下:

    catkin_make [args]
    -h, --help 幫助信息
    -C DIRECTORY, --directory DIRECTORY 工作空間的路徑 (默認為 ‘.’)
    –source SOURCE src的路徑 (默認為’workspace_base/src’)
    –build BUILD build的路徑 (默認為’workspace_base/build’)
    –use-ninja 用ninja取代make
    –use-nmake 用nmake取’make
    –force-cmake 強制cmake, 即使已經cmake過
    –no-color 禁止彩色輸出(只對catkin_make和CMake生效)
    –pkg PKG [PKG …] 只對某個PKG進行make
    –only-pkg-with-deps ONLY_PKG_WITH_DEPS [ONLY_PKG_WITH_DEPS …]
    將指定的package列入白名單CATKIN_WHITELIST_PACKAGES,
    之編譯白名單里的package。 該環境變量存在于CMakeCache.txt。
    –cmake-args [CMAKE_ARGS [CMAKE_ARGS …]]
    傳給CMake的參數
    –make-args [MAKE_ARGS [MAKE_ARGS …]]
    傳給Make的參數
    –override-build-tool-check
    用來覆蓋由于不同編譯工具產生的錯誤

  • catkin工作空間結構介紹

    catkin工作空間的結構,它包括了 src 、 build 、 devel 三個路徑, 在
    有些編譯選項下也可能包括其他。 但這三個文件夾是catkin編譯系統默認的。 它們的具體作用
    如下:
    src/: ROS的catkin軟件包( 源代碼包)
    build/: catkin( CMake) 的緩存信息和中間文件
    devel/: 生成的目標文件( 包括頭文件, 動態鏈接庫, 靜態鏈接庫, 可執行文件等) 、 環境變量。
    下圖是catkin編譯工作流程。

    build和devel文件夾是Catkin自動編譯生成的。而src文件夾則是主要用到的,我們寫的ROS程序和源代碼包都放在這個文件夾。如下圖所示:

    下載tree工具包可以看到以下結構圖:

  • Package軟件包
    應該說Package包是ROS的基本單元,任何語言程序都需要放到包中,因為包是編譯的基本單元。一個package的常見文件如下:

    其中定義package的是 CMakeLists.txt 和 package.xml , 這兩個文件是package中必不可少的。 catkin編譯系統在編譯前, 首先就要解析這兩個文件。 這兩個文件就定義了一個package。
    CMakeLists.txt: 定義package的包名、 依賴、 源文件、 目標文件等編譯規則, 是package
    不可少的成分
    package.xml: 描述package的包名、 版本號、 作者、 依賴等信息, 是package不可少的成
    分 src
    /: 存放ROS的源代碼, 包括C++的源碼和(.cpp)以及Python的module(.py)
    include/: 存放C++源碼對應的頭文件
    scripts/: 存放可執行腳本, 例如shell腳本(.sh)、 Python腳本(.py)
    msg/: 存放自定義格式的消息(.msg)
    srv/: 存放自定義格式的服務(.srv)
    models/: 存放機器人或仿真場景的3D模型(.sda, .stl, .dae等)
    urdf/: 存放機器人的模型描述(.urdf或.xacro)
    launch/: 存放launch文件(.launch或.xml)

    • 創建Package
      Package需要在catkin/src的文件夾下創建,可以用catkin_creat_pkg命令。指令如下:
      catkin_create_pkg package depends(依賴的包名)
    • package相關命令
  • CMakeLists
  • Package.xml
  • 6.Node & Master
    node 是ROS的最小進程單元,一個軟件包里可以有多個可執行文件, 可執行文件在運行之后就成了一個進程(process), 這個進程在ROS中就叫做節點。
    master在整個網絡通信架構里相當于管理中心, 管理著各個node。 node首先在master處進行注冊, 之后master會將該node納入整個ROS程序中。node之間的通信也是先由master進行“牽線”, 才能兩兩的進行點對點通信。 當ROS程序啟動時, 第一步首先啟動master, 由節點管理器處理依次啟動node。
    $roscore指令可以啟動ROS master ,rosout ,parameter serve。

    • rosnode

    • launch

  • Topic
    ROS中的通信方式中, topic是常用的一種。 對于實時性、 周期性的消息, 使用topic來傳輸是
    最佳的選擇。 topic是一種點對點的單向通信方式, 這里的“點”指的是node, 也就是說node之
    間可以通過topic方式來傳遞信息。 topic要經歷下面幾步的初始化過程: 首先, publisher節點
    和subscriber節點都要到節點管理器進行注冊, 然后publisher會發布topic, subscriber在
    master的指揮下會訂閱該topic, 從而建立起sub-pub之間的通信。 注意整個過程是單向的。 其
    結構示意圖如下:
    • 通信實例

    總結

    以上是生活随笔為你收集整理的ROS总结一,catkin,package,CMakeList,Topic,node的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。