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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

ROS系統(tǒng)學(xué)習(xí)已經(jīng)有幾周了,但是感覺學(xué)的效率有點低。不過還是要把總結(jié)先寫了,以盡快進入下一階段學(xué)習(xí)。

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

  • catkin編譯系統(tǒng)
    catkin的誕生是為了替代rosbuild

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

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

    CMakeLists.txt: 構(gòu)建package所需的CMake文件
    調(diào)用Catkin的函數(shù)/宏
    解析 package.xml
    找到其他依賴的catkin軟件包
    將本軟件包添加到環(huán)境變量

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

    catkin_make [args]
    -h, --help 幫助信息
    -C DIRECTORY, --directory DIRECTORY 工作空間的路徑 (默認(rèn)為 ‘.’)
    –source SOURCE src的路徑 (默認(rèn)為’workspace_base/src’)
    –build BUILD build的路徑 (默認(rèn)為’workspace_base/build’)
    –use-ninja 用ninja取代make
    –use-nmake 用nmake取’make
    –force-cmake 強制cmake, 即使已經(jīng)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。 該環(huán)境變量存在于CMakeCache.txt。
    –cmake-args [CMAKE_ARGS [CMAKE_ARGS …]]
    傳給CMake的參數(shù)
    –make-args [MAKE_ARGS [MAKE_ARGS …]]
    傳給Make的參數(shù)
    –override-build-tool-check
    用來覆蓋由于不同編譯工具產(chǎn)生的錯誤

  • catkin工作空間結(jié)構(gòu)介紹

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

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

    下載tree工具包可以看到以下結(jié)構(gòu)圖:

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

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

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

    • rosnode

    • launch

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

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。