0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

剖析ROS編譯教程

jf_78858299 ? 來(lái)源:云深之無(wú)跡 ? 作者:云深之無(wú)跡 ? 2023-05-19 17:01 ? 次閱讀

ROS的編譯和安裝還是稍微有點(diǎn)門檻的,這篇文章簡(jiǎn)單的記錄一下。

圖片

ROS功能包的安裝

https://github.com/TonyRobotics/RoboWare

圖片

一個(gè)合適的IDE,我看了一下是VSCode的魔改

圖片

編譯的框圖

ROS對(duì)CMake進(jìn)行了擴(kuò)展,于是便有了Catkin編譯系統(tǒng)。

Catkin是基于CMake的編譯構(gòu)建系統(tǒng),具有以下特點(diǎn):

  • Catkin沿用了包管理的傳統(tǒng)像 find_package()基礎(chǔ)結(jié)構(gòu),pkg-config
  • 擴(kuò)展了CMake,例如
    • 軟件包編譯后無(wú)需安裝就可使用
    • 自動(dòng)生成find_package()代碼,pkg-config文件
    • 解決了多個(gè)軟件包構(gòu)建順序問(wèn)題

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

  • 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)境變量

圖片

這個(gè)是我手邊的一個(gè)典型的目錄

圖片

其中一個(gè)功能包的結(jié)構(gòu)

catkin編譯的工作流程如下:

  1. 首先在工作空間catkin_ws/src/下遞歸的查找其中每一個(gè)ROS的package。
  2. package中會(huì)有package.xmlCMakeLists.txt文件,Catkin(CMake)編譯系統(tǒng)依據(jù)CMakeLists.txt文件,從而生成makefiles(放在catkin_ws/build/)。
  3. 然后make剛剛生成的makefiles等文件,編譯鏈接生成可執(zhí)行文件(放在catkin_ws/devel)。

也就是說(shuō),Catkin就是將cmakemake指令做了一個(gè)封裝從而完成整個(gè)編譯過(guò)程的工具。catkin有比較突出的優(yōu)點(diǎn),主要是:

  • 操作更加簡(jiǎn)單
  • 一次配置,多次使用
  • 跨依賴項(xiàng)目編譯

圖片

xml文件是一些項(xiàng)目的基本信息,就是版本號(hào),描述什么的

圖片

就是這樣

圖片

比對(duì)的看

圖片

一些常見的編譯命令

圖片

編譯流程

圖片

編譯系統(tǒng)會(huì)遞歸查找

圖片

圖片

圖片

這是常見的ROS命令

圖片

因?yàn)镃make是??停@里也有Cmake的一個(gè)常見函數(shù)的說(shuō)明

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編譯系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    8857
  • ROS
    ROS
    +關(guān)注

    關(guān)注

    1

    文章

    276

    瀏覽量

    16921
  • CMake
    +關(guān)注

    關(guān)注

    0

    文章

    28

    瀏覽量

    1254
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ROS系統(tǒng)是什么?ROS系統(tǒng)主要特點(diǎn)有哪些?創(chuàng)龍RK3568J+Debian的ROS2系統(tǒng)案例

    了操作系統(tǒng)應(yīng)有的服務(wù),包括硬件抽象,底層設(shè)備控制,常用函數(shù)的實(shí)現(xiàn),進(jìn)程間消息傳遞,以及包管理。它也提供用于獲取、編譯、編寫、和跨計(jì)算機(jī)運(yùn)行代碼所需的工具和庫(kù)函數(shù)。 隨著工業(yè)智能化的快速發(fā)展,智能機(jī)器人設(shè)備已成為工業(yè)自動(dòng)化體系的佼佼者,而智能機(jī)器人設(shè)備核心—ROS系統(tǒng),是
    的頭像 發(fā)表于 11-30 14:41 ?4255次閱讀
    <b class='flag-5'>ROS</b>系統(tǒng)是什么?<b class='flag-5'>ROS</b>系統(tǒng)主要特點(diǎn)有哪些?創(chuàng)龍RK3568J+Debian的<b class='flag-5'>ROS</b>2系統(tǒng)案例

    【UT4418申請(qǐng)】移植ubuntu的ROS版本,重新編譯基于a8的智能網(wǎng)關(guān)到此平臺(tái)

    功的tiny210,但是還是不怎么樣,系統(tǒng)本身很多問(wèn)題,別說(shuō)運(yùn)行ROS了&項(xiàng)目描述:&lt;1&gt;學(xué)習(xí)并且編譯安裝ubuntu系統(tǒng),其中包括
    發(fā)表于 11-02 11:02

    如何移植ROS程序到Android

    在Android上運(yùn)行ROS程序一般使用rosjava-android。但是也可以直接利用NDK編譯成so文件移植到Android上。當(dāng)然移植過(guò)程也并不簡(jiǎn)單。 下面是一個(gè)簡(jiǎn)單的例子。安裝cmake
    發(fā)表于 05-16 19:20

    ROS與STM32是如何進(jìn)行通信的

    角速度、實(shí)際線速度STM32端ROS端之前運(yùn)行的ROS項(xiàng)目都是在終端編譯,用vim或者gedit修改代碼,很不方便,函數(shù)跳轉(zhuǎn)查看都沒(méi)辦法實(shí)現(xiàn)。所以今天先安裝一個(gè)IDE試試ROS官網(wǎng)上有
    發(fā)表于 08-11 07:25

    什么是ROS?如何學(xué)習(xí)ROS

    什么是ROS?如何學(xué)習(xí)ROS?
    發(fā)表于 11-11 07:21

    如何利用RK1808去搭建一種ROS交叉編譯環(huán)境呢

    如何利用RK1808去搭建一種ROS交叉編譯環(huán)境呢?其方法是什么?
    發(fā)表于 02-15 06:32

    ROS放到RK3326板上編譯時(shí)出現(xiàn)的問(wèn)題有哪些呢

    ROS放到RK3326板上編譯時(shí)出現(xiàn)的問(wèn)題有哪些呢?怎樣去解決?
    發(fā)表于 02-17 06:08

    RK3308-CC-PLUS板子啟用ROS模塊后交叉編譯,menuconfig中沒(méi)有ROS選項(xiàng)怎么解決?

    RK3308-CC-PLUS板子啟用ROS模塊后交叉編譯,menuconfig中沒(méi)有ROS選項(xiàng)怎么解決?
    發(fā)表于 03-09 06:23

    怎樣通過(guò)Arduino IDE直接使用ROS提供的一些特性呢

    :可以把jade替換為你安裝的版本:如indigo。嘗試了上面的指令,沒(méi)有成功,可能和ROS編譯安裝的有關(guān)吧,也不是很確定。只能通過(guò)源碼編譯安裝。在下面的指令中,代表你的catkin工作空間。注意
    發(fā)表于 07-06 11:49

    在FirePrime開發(fā)板上編譯安裝ROS jade

    學(xué)習(xí)系列 -- 樹莓派編譯安裝完整版本ROS  解決過(guò)程如下:  創(chuàng)建新目錄,下載并編譯這個(gè)包。  當(dāng)checkinstall詢問(wèn)是否改變安裝選項(xiàng)時(shí),選擇[2],將名字從“collada-dom
    發(fā)表于 07-07 11:21

    ROS在Zedboard上的移植

    : Zedboard ARM處理器 : Cortex-A9 ARM操作系統(tǒng): Linaro 12.11 ROS版本: indigo 移植前提 1. 開發(fā)板可以連接網(wǎng)絡(luò) 2. 使用SSH等對(duì)開發(fā)板進(jìn)行遠(yuǎn)程控制 編譯方法
    發(fā)表于 10-26 11:52 ?1070次閱讀

    ROS與STM32通信

    角速度、實(shí)際線速度STM32端ROS端之前運(yùn)行的ROS項(xiàng)目都是在終端編譯,用vim或者gedit修改代碼,很不方便,函數(shù)跳轉(zhuǎn)查看都沒(méi)辦法實(shí)現(xiàn)。所以今天先安裝一個(gè)IDE試試ROS官網(wǎng)上有
    發(fā)表于 12-24 19:00 ?11次下載
    <b class='flag-5'>ROS</b>與STM32通信

    如何配置ROS驅(qū)動(dòng)功能包

    配置ROS驅(qū)動(dòng)功能包 將WHEELTEC 100N的 ROS_SDK 保存在工作空間的src文件夾下。 通過(guò) catkin_make 進(jìn)行編譯。 剛裝的ros環(huán)境會(huì)報(bào)錯(cuò),如下: Mak
    的頭像 發(fā)表于 11-22 18:13 ?1100次閱讀
    如何配置<b class='flag-5'>ROS</b>驅(qū)動(dòng)功能包

    ros的基本概念是什么

    基本概念: ROS是一個(gè)用于在不同進(jìn)程間匿名的發(fā)布、訂閱、傳遞信息的中間件。 ROS2系統(tǒng)的核心部分是ROS網(wǎng)絡(luò)(ROS Graph)。 ROS
    的頭像 發(fā)表于 11-27 11:21 ?1670次閱讀

    AI編譯器技術(shù)剖析

    隨著人工智能技術(shù)的飛速發(fā)展,AI編譯器作為一種新興的編譯技術(shù)逐漸進(jìn)入人們的視野。AI編譯器不僅具備傳統(tǒng)編譯器的功能,如將高級(jí)語(yǔ)言編寫的源代碼轉(zhuǎn)換為機(jī)器可執(zhí)行的代碼,還融入了人工智能技術(shù)
    的頭像 發(fā)表于 07-17 18:28 ?1340次閱讀