国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

在 Qt Creator 上創(chuàng)建 ROS 項目并新建/導入 ROS 包

這篇具有很好參考價值的文章主要介紹了在 Qt Creator 上創(chuàng)建 ROS 項目并新建/導入 ROS 包。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

0、引言

?? 在開始之前,您需要確保您已經(jīng)為 Qt 配置好了 ROS 開發(fā)環(huán)境了。如果您還沒有配置好,可以參考這篇文章

本文將著手探討如何在 Qt Creator 上編輯 ROS 項目(工作空間)。

1、本教程使用到的相關(guān)軟件或產(chǎn)品

  1. Ubuntu 20.04.6 LTS
  2. ROS Noetic Ninjemys LTS
  3. Qt 6.2.4 LTS
  4. Qt Creator 10.0.1

2、在帶有 ROS 插件的 Qt Creator 中編輯 ROS 項目

2.1、Qt Creator 新建 ROS 工程

  1. 在(零)基礎(chǔ)概念篇介紹 ROS 工作空間 時曾說過 “最頂層的工作空間文件夾(可以任意命名)和 src 文件夾(必須命名為"src")是需要自己創(chuàng)建的”。那么我們先創(chuàng)建如下的文件目錄:

    workspace           #在用戶目錄(~)新建一個“workspace”專門用于存放ROS工作空間
    └── catkin_ws1      #這是ROS工作空間文件夾,名字自擬
        └── src         #創(chuàng)建一個一級目錄“src”文件夾
    

    qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu

  2. 文件目錄創(chuàng)建完成后,打開 Qt Creator,點擊左上角 “文件”==>“New Project” 新建項目,在 “其他項目” 分區(qū)中找到 “ROS Workspace” 新建一個 ROS 工作空間:
    qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu

  3. 在彈出的對話框中,我們需要為項目命名并選擇工作空間的路徑,隨后點擊下一步:
    qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu

    描述
    Name Qt Creator 中 ROS 項目顯示的名字,建議與我們創(chuàng)建的工作空間文件夾名稱保持一致
    Distribution ROS 發(fā)行版路徑
    Build System 構(gòu)建系統(tǒng)。不出意外的話有三個可選項:①CatkinMake(就是 Catkin);②CatkinTools;③Colcon;任選一個即可,它們都可以用來構(gòu)建和管理 ROS 軟件包,筆者直接按默認使用 CatkinTools(當然最穩(wěn)妥的還是選擇第一個 —— CatkinMake)
    Workspace Path 工作空間目錄
  4. 下一步來到“匯總”頁面,如果不打算添加到版本控制系統(tǒng)的話就可以直接點擊 “完成” 了:
    qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu

    可以看到,創(chuàng)建 ROS 項目只會添加后綴為 .workspaceXML 文件,這個文件包含了 Qt Creator 中用于管理 ROS 工作空間的配置信息和設(shè)置,可以用于在 Qt Creator 中方便地打開和編輯 ROS 工作空間

    ?? XML 文件不一定要用 .xml 作為文件后綴,文件后綴名只是一種幫助用戶和計算機識別文件類型的方式,它并不影響文件的內(nèi)容或格式。因此,XML文件可以使用任何后綴名,只要它遵循XML語法規(guī)則即可。同理,同為輕量級標記語言的 JSON、YAMLTOML 也是如此

  5. 創(chuàng)建 ROS 項目完成后,可以看到如下圖所示的目錄結(jié)構(gòu):
    qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu

    • 可以看到 .workspace 文件內(nèi)容其實很簡單:一是指定了 ROS 發(fā)行版的文件路徑;二是指定了默認的構(gòu)建系統(tǒng)為我們剛才選擇的 CatkinTools。

    • 剛才我們選擇構(gòu)建系統(tǒng)是用一個下拉框選擇的,而下拉框中的每一項都是有索引的,從0開始。我們選擇的 CatkinTools 是第二項(索引為1)。

    • 完成 ROS 項目創(chuàng)建后,如果我們此時關(guān)閉該項目,則可以看到除了 .workspace 文件,Qt Creator 還會自動創(chuàng)建一個與 .workspace 文件同名的后綴為 .workspace.userXML 文件,用于存儲與 ROS 工作空間相關(guān)的用戶特定設(shè)置和配置。
      qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu

    • .workspace.user 文件只包含用戶的設(shè)置,而不包含 Qt Creator 用于管理 ROS 工作空間的配置信息。因此,如果我們想分享 ROS 項目,只需要分享 .workspace 文件,而不需要分享 .workspace.user 文件。

2.2、Qt Creator 創(chuàng)建的 ROS 工程導入現(xiàn)有 ROS 軟件包

如果您還沒有現(xiàn)成的 ROS 包,您可以前往筆者的 Github 倉庫下載。
下載下來的壓縮包解壓后記得把文件夾名稱中的“-master”刪除

qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu

  1. 由于我們創(chuàng)建 ROS 工程時選擇的構(gòu)建系統(tǒng)是 CatkinTools,Ubuntu 20.04 沒有自帶這個工具,我們需要先下載安裝它:

    1. 首先同步源:

      sudo apt-get update
      
    2. 然后安裝 catkin_tools 包:

      sudo apt-get install python3-catkin-tools
      
  2. 此外由于我們現(xiàn)有的 ROS 包用到了 ROS 的地圖服務(map_server)包,但 ROS Noetic 并沒有自帶這個包,我們需要先安裝這個包:

    1. 首先同步源:

      sudo apt-get update
      
    2. 然后安裝 map_server 包:

      sudo apt-get install ros-noetic-map-server
      
  3. 安裝完 map_server,還是接著新建 ROS 工程的內(nèi)容。ROS 工程創(chuàng)建完成后,我們前往 ROS 工程的 src 文件夾下粘貼我們現(xiàn)有的 ROS 包:
    qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu
    隨后回到 Qt Creator,關(guān)閉并重新打開項目,Qt Creator 會花一點時間自動構(gòu)建該軟件包,耐心等待即可,完成后如下圖所示:
    qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu

  4. 接著前往 “項目”>“構(gòu)建和運行”>“運行”==>“執(zhí)行檔” 指定軟件的可執(zhí)行文件所在路徑:
    qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu

    可執(zhí)行文件一般在 “devel”(開發(fā)空間)>“lib>(與我們導入的 ROS 包同名的那個文件夾)下。

    以本文提供的 ROS 包為例,可執(zhí)行文件的絕對路徑為:
    /home/xjy/workspace/catkin_ws1/devel/lib/qviz_demo/qviz_demo

  5. 在(零)基礎(chǔ)概念篇介紹 ROS Master 時曾介紹過“ROS Master 為 ROS 系統(tǒng)中的其余節(jié)點提供命名和注冊服務”(在 ROS 中,一個應用程序進程表現(xiàn)為一個 ROS Node)。所以在運行我們的 ROS 軟件之前,我們需要先啟動 ROS Master:
    在 Ubuntu 桌面使用 ctrl+alt+T 快捷鍵打開一個終端,然后使用 roscore 命令啟動 ROS Master,如下圖所示:
    qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu

  6. 完成后,就可以愉快地運行我們的 ROS 軟件啦~
    qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu
    (由于我們是在本機上運行的 roscore,所以這里我們 ROS Master 的地址即回環(huán)地址)

2.3、Qt Creator 創(chuàng)建的 ROS 工程新建 ROS 軟件包

如果我們沒有現(xiàn)有的 ROS 軟件包,那么這個時候可能就需要我們自己新建軟件包了。使用 ros_qtc_plugin 插件新建 ROS 包只會添加兩個文件:CMakeLists.txtpackage.xml,這也是任何 ROS 功能包都必須包含的兩個文件。其中 CMakeLists.txt 文件用于描述構(gòu)建過程和依賴關(guān)系等內(nèi)容;package.xml 用于描述軟件包的名稱、版本號、描述信息、郵件地址、作者、許可證以及其他 catkin 包依賴關(guān)系等內(nèi)容。

由于筆者水平及時間有限,就并沒有研究如何從新建一個 ROS 軟件包到添加各種源碼并成功運行的全過程;這里僅演示如何新建 ROS 包,更多內(nèi)容還請感興趣的讀者自行摸索了。

  1. 由于我們創(chuàng)建 ROS 工程時選擇的構(gòu)建系統(tǒng)是 CatkinTools,Ubuntu 20.04 沒有自帶這個工具,我們需要先下載安裝它:

    1. 首先同步源:

      sudo apt-get update
      
    2. 然后安裝 catkin_tools 包:

      sudo apt-get install python3-catkin-tools
      
  2. ROS 工程創(chuàng)建完成后,我們右擊項目名稱,點擊 “添加新文件”:
    qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu
    (或者左上角 “文件(F)”==>“New File”)

  3. 選擇 ROS 分類下的 Package 添加即可:
    qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu

  4. 在 “Package Details” 頁面,除了包名稱(Name)是必填項,其他所有項都是默認填寫有內(nèi)容或者可忽略不填(后續(xù)有需求隨時可在 CMakeLists.txtpackage.xml 內(nèi)手動添加相應內(nèi)容):
    qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu

    • Name:軟件包名稱,ROS 約定軟件包名稱應是小寫字母 + 下劃線(_)分割單詞的格式。ROS 軟件包名稱是其在 ROS 系統(tǒng)中的唯一標識符,因此請確保使用唯一的名稱。
    • Path:軟件包的路徑,指定軟件包的存儲位置。通常,ROS 軟件包被存儲在ROS 工作空間的 src 目錄下。
    • Version:軟件包的版本號,用于標識軟件包的不同版本。ROS 軟件包版本號通常采用 Semantic Versioning 規(guī)范,即 major.minor.patch主版本號.次版本號.修訂號)格式。
    • License:軟件包的許可證類型,用于說明軟件包的使用和分發(fā)條款。如果對許可證不太了解,可以參考:什么是License?許可證?協(xié)議?都有哪些License? - 知乎。
    • Dependencies/Catkin:ROS 軟件包依賴的其他 ROS 軟件包的名稱,通常在這一欄我們需要填寫對 roscpp 的依賴以使用 ROS 的 C++ 接口。如果想要添加多個依賴,可以使用英文逗號(,)或者空格隔開。
    • Dependencies/System:ROS 軟件包依賴的系統(tǒng)庫的名稱,通常這一欄可以不填。
    • Dependencies/Boost:ROS 軟件包依賴的 Boost 庫的名稱(Boost 是一個開源的、免費的 C++ 庫集合,包含了大量的高質(zhì)量、可重用的代碼庫。Boost 庫覆蓋了廣泛的 C++ 編程領(lǐng)域,包括容器、日期時間、算法、數(shù)值計算、多線程、文件系統(tǒng)、正則表達式等方面),通常這一欄可以不填。
    • Description:ROS 軟件包的簡要描述,通常包括軟件包的用途、功能、特性等。這些信息將在軟件包的 package.xml 文件中被包含,并在使用 rospack 命令或者其他 ROS 工具時顯示出來。
  5. 下面是一個 “Package Details” 頁面填寫完成的實例展示:
    qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu

  6. 填寫完成后,點擊 “下一步(N)”??梢源_認新建 ROS 包只會添加兩個文件(CMakeLists.txtpackage.xml):
    qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu

  7. 點擊“完成(F)” 即可成功向 ROS 工程添加一個新建的 ROS 軟件包。完成后如下圖所示:
    qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu

  8. 完成后,右擊項目名稱,點擊“重新構(gòu)建”:
    qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu

  9. 稍等片刻就可以看到項目構(gòu)建成功的提示,說明我們新建的 ROS 軟件包是沒有任何問題的:
    qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu

2.4、在 ROS 軟件包中使用 Qt 組件

既然是在 Qt Creator 中編輯 ROS 項目,那怎么能夠?qū)υ?ROS 軟件包使用 Qt 組件不感興趣呢??(′▽`)

下面介紹在 ROS 項目中如何添加對 Qt 各種各樣的組件的引用,以便使用這些組件。如果您想要使用 Qt 框架開發(fā)基于 ROS 的桌面應用程序,那么請勿錯過 2.4 小節(jié)。??

  1. 讓我們緊接著 2.3 小節(jié) 的內(nèi)容繼續(xù)。新建 ROS 軟件包并構(gòu)建成功后,我們點擊“項目”==>“構(gòu)建”,找到 Build Environment 構(gòu)建環(huán)境:
    qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu

  2. 可以看到 ROS 項目是重新設(shè)置了 CMAKE_PREFIX_PATH 的:
    qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu

    什么是 CMAKE_PREFIX_PATH

  3. 點擊該環(huán)境變量,選中其值,并點擊右方的“Edit”:
    qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu

  4. 在彈出的對話框中點擊“添加”:
    qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu

  5. 找到 Qt 組件庫所在目錄(在 Qt 的安裝目錄下),點擊“打開”:
    qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu

  6. 可以看到路徑列表中已經(jīng)添加了 Qt 組件庫所在路徑了,點擊右下方“確定(O)”以保存更改:
    qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu

  7. 完成后可以看到 CMAKE_PREFIX_PATH 中已經(jīng)成功添加了我們新增的路徑了:
    qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu

  8. 回到 ROS 軟件包的 CMakeLists.txt 文件,我們可以在其中嘗試查找一個 Qt 組件:

    # 查找 Qt6 的 Charts 組件
    find_package(Qt6Charts REQUIRED)
    
  9. 保存更改,隨后右擊項目名稱,點擊“重新構(gòu)建”:
    qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu

  10. 構(gòu)建成功!說明 CMake 已經(jīng)成功找到該 Qt 組件啦~:
    qtcreate打開ros工程,Qt開發(fā),ROS,Qt+librviz開發(fā),qt,ubuntu

  11. 后續(xù)小伙伴們就能在項目中愉快地使用各種 Qt 組件了,只需要在 CMakeLists.txt 中通過 target_link_libraries 命令將模塊鏈接到目標項目即可。例如:文章來源地址http://www.zghlxwxcb.cn/news/detail-818307.html

    # 向項目添加可執(zhí)行文件(僅作演示,畢竟我們新建的 ROS 軟件包中并沒有 main.cpp 源文件)
    add_executable(${PROJECT_NAME}_node main.cpp)
    # 將 Qt6 Charts 模塊鏈接到目標
    target_link_libraries(${PROJECT_NAME}_node Qt6::Charts)
    

到了這里,關(guān)于在 Qt Creator 上創(chuàng)建 ROS 項目并新建/導入 ROS 包的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包