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

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

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

ROS基本介紹

jf_78858299 ? 來源:控制工程研習(xí) ? 作者:C27 ? 2023-05-19 17:07 ? 次閱讀

近來找到的實習(xí)主要是做智能車控制,用到的也就是ROS機器人操作系統(tǒng),ROS需要運行在一個操作系統(tǒng)上,這個操作系統(tǒng)常用的就是Linux,而公司用的就是Ubuntu,所以Ubuntu-ROS組合就是實習(xí)的主要學(xué)習(xí)內(nèi)容了。所以我就新開了一個坑,網(wǎng)絡(luò)上ROS的資源很豐富,我在此只是用以分享學(xué)習(xí)筆記。

1. ROS基本介紹

ROS是主流的機器人操作系統(tǒng)

官方將ROS解釋為框架、工具、功能和社區(qū)。

ROS實際上相當于一個 軟件工具集 ,采用分布式框架,通信框架是其主要組成部分,可將多個單獨設(shè)計的進程(節(jié)點)組合起來并同時運行。

各節(jié)點可實現(xiàn)各種不同的功能,并通過ROS這一橋梁實現(xiàn)相互通信。這樣的特點使其拓展性好,復(fù)用率高,極大地提高了龐大和冗雜的機器人設(shè)計過程的效率。

ROS能給開發(fā)人員提供可視化界面工具,包含諸如Gazebo、Rviz等用于仿真和調(diào)試的基本工具,以及各種基礎(chǔ)程序包(控制、路徑、規(guī)劃等),只需在其上設(shè)計所要實現(xiàn)的特殊功能的部分并將它們組合起來即可。

2. 為什么選擇Ubuntu系統(tǒng)

軟件是機器人的核心。

機器人應(yīng)用軟件需要運行在一個操作系統(tǒng)上, 該操作系統(tǒng)可以提供與機器人作動器和傳感器通信的功能 ?;贚inux的操作系統(tǒng)在與底層硬件交互的過程中具有極大的靈活性,并且提供相關(guān)許可允許用戶根據(jù)機器人應(yīng)用對其進行修改。在這種應(yīng)用背景下,Ubuntu快速響應(yīng)能力、輕量級屬性及高度安全性的優(yōu)點得以展現(xiàn)。

當前,Ubuntu-ROS組合已成為機器人編程的一個理想選擇。

3. ROS框架

從根本上說,ROS是兩個程序或進程間通信的框架。

For example,如果程序A想要向程序B發(fā)送數(shù)據(jù),并且程序B也想要向程序A發(fā)送數(shù)據(jù),那么可以輕松地用ROS實現(xiàn)這項工作。

一個機器人可能有許多傳感器、作動器和計算單元。怎樣才能做到控制這么多作動器及這么多傳感器數(shù)據(jù)呢?我們可以只用一個程序完成這些嗎?這當然可以。但是這并不是一個好方法。

更好的解決方案是我們可以編寫多個獨立的程序來處理傳感器數(shù)據(jù)、向作動器發(fā)送控制指令,但是這就需要在這些程序之間進行數(shù)據(jù)交換,而這恰恰就是我們使用ROS的場景。

4. ROS中兩個程序之間的通信如何完成

兩個程序分別被標記為節(jié)點1和節(jié)點2。當程序啟動時,節(jié)點便會和名為ROS Master的ROS程序通信。節(jié)點將所有信息發(fā)給ROS Master,包括它發(fā)送和收到的消息類型、本節(jié)點路由信息等。發(fā)送信息的節(jié)點稱為發(fā)布節(jié)點(Publisher Nodes),接收信息的節(jié)點稱為訂閱節(jié)點(Subscriber Nodes)。ROS Master擁有在計算機上正在運行的所有發(fā)送節(jié)點和接收節(jié)點的信息。如果節(jié)點1發(fā)送某個名為A的數(shù)據(jù),而節(jié)點2正好訂閱了該消息,那么ROS Master就向兩個節(jié)點廣播彼此的節(jié)點信息(注意:不是消息)以幫助它們建立連接,這樣兩個節(jié)點就可以互相通信了。

圖片

ROS節(jié)點可以彼此間互相傳送不同類型的數(shù)據(jù),這些數(shù)據(jù)可以包含像整數(shù)、浮點數(shù)、字符串等這類簡單類型的數(shù)據(jù)。這些節(jié)點間相互傳遞的不同類型的數(shù)據(jù)稱為 ROS消息(Messages) 。有了ROS消息,我們就可以在節(jié)點之間傳遞各種類型的數(shù)據(jù)了。這些消息通過一種類似于數(shù)據(jù)總線或者路徑標識的媒介進行傳播,我們稱為ROS話題(Topics)。每一條話題都有自己的名字,比如一個可以傳輸字符串數(shù)據(jù)的名為“chatter”的話題。

如果一個ROS節(jié)點想通過話題廣播消息,那么它只需要給ROS話題發(fā)送消息即可,消息中就包含了消息的數(shù)據(jù)類型(所以不用另外告知topics 數(shù)據(jù)的類型)。

圖4-12中,節(jié)點1和節(jié)點2就是通過ROS話題發(fā)送和接受消息的。當ROS Master交換完兩個節(jié)點的信息之后,兩個節(jié)點間消息的發(fā)送和接收過程就開始了。

5. ROS中的一些名詞

ROS節(jié)點(Node) :使用ROS API進行運算的進程。

ROS主機(Master) :連接ROS節(jié)點的媒介程序。

** ROS參數(shù)服務(wù)器(Parameter Server)** :指通常與ROS Master一起運行的一個程序。使用者在此服務(wù)器上存儲不同的參數(shù),所有的節(jié)點都可以訪問它,使用者可以設(shè)置參數(shù)的保密性。如果某個參數(shù)是公共的,那么所有節(jié)點都可以訪問;但如果某個參數(shù)具有私有屬性,那么只有特定的節(jié)點才可以訪問這個參數(shù)。

ROS話題(Topic) :即“總線”,ROS節(jié)點可以通過該總線發(fā)送或接收信息。一個節(jié)點可以發(fā)布或者接收任意數(shù)量的話題。

ROS消息(Message) :消息基本上都是通過話題傳送的。ROS含有許多內(nèi)建的消息類型,當然使用者也可以定義他們自己的消息類型。

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

    關(guān)注

    210

    文章

    28104

    瀏覽量

    205853
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6685

    瀏覽量

    123140
  • Ubuntu
    +關(guān)注

    關(guān)注

    5

    文章

    559

    瀏覽量

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

    關(guān)注

    1

    文章

    276

    瀏覽量

    16942
收藏 人收藏

    評論

    相關(guān)推薦

    ROS與RPLIDAR結(jié)合使用說明及問題匯總

    的ROSpackage rplidar_ros介紹:rplidar_ros是國內(nèi)第一款面向全球ROS開發(fā)者推出相應(yīng)package的激光雷達,其低廉的價格大大推動了激光雷達在
    發(fā)表于 09-07 16:27

    ROS RIKIBOT基礎(chǔ)--使用系列 第一章節(jié)】ROS機器人硬件系統(tǒng) 精選資料分享

    ROS RIKIBOT基礎(chǔ)–使用系列】ROS機器人硬件介紹1.RIKIBOT機器人硬件介紹1.1硬件框架ROS機器人硬件 采用樹莓派和ST
    發(fā)表于 07-30 06:59

    ROS2的安裝與使用 精選資料推薦

    ros2的烏龜仿真turtlesim,介紹topic,service,action等元素及其使用,介紹ros的基本操作
    發(fā)表于 08-30 08:24

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

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

    ROS是什么?機器人操作系統(tǒng)ROS介紹

    ROS 是 Robot Operating System 的縮寫,原本是斯坦福大學(xué)的一個機器人項目,后 來由 WillowGarage 公司發(fā)展,目前由 OSRF(Open Source
    發(fā)表于 09-13 17:23 ?14次下載
    <b class='flag-5'>ROS</b>是什么?機器人操作系統(tǒng)<b class='flag-5'>ROS</b>的<b class='flag-5'>介紹</b>

    ROS的含義與機器人操作系統(tǒng)ROS介紹

    為了說明講清楚 ROS,我就從 ROS 是什么,為什么使用 ROS,如何使用 ROS 三個方面展開。 △出自今年《機器人視覺與應(yīng)用》課程本人制作的課件 是什么
    發(fā)表于 09-26 14:08 ?12次下載

    機器人操作系統(tǒng)入門課程講義資料免費下載

    ,受到了學(xué)術(shù)界和工業(yè)界的歡迎,如今已經(jīng)廣泛應(yīng)用于機械臂、移動底盤、無人機、無人車等許多種類的機器人上。本章介紹ROS的產(chǎn)生、發(fā)展、特點和安裝方法,帶給你一個簡單直觀的ROS介紹。
    發(fā)表于 10-09 08:00 ?6次下載

    ros智能小車硬件介紹

    和ArduinoMega2560兩個版本,下面將分別為大家介紹不同板子的通信原理及使用方法。1.1樹莓派端ROS主節(jié)點Raspberry Pi(中文名為“樹莓派”,簡寫為RPi,(或者RasPi / RPI) 是為學(xué)習(xí)計算機編程教育而設(shè)計),只有信用卡大小的微型電腦,其
    發(fā)表于 12-07 14:36 ?16次下載
    <b class='flag-5'>ros</b>智能小車硬件<b class='flag-5'>介紹</b>

    ROS1的通信架構(gòu)的基礎(chǔ)通信方式及相關(guān)概念

    ROS的通信架構(gòu)是ROS的靈魂所在,它包括數(shù)據(jù)處理,進程運行,消息傳遞等** 。這篇文章主要介紹ROS1的通信架構(gòu)的基礎(chǔ)通信方式和相關(guān)概念,因為RO
    的頭像 發(fā)表于 05-19 17:23 ?3353次閱讀
    <b class='flag-5'>ROS</b>1的通信架構(gòu)的基礎(chǔ)通信方式及相關(guān)概念

    ROS/ROS 2 介紹

    ROS是機器人操作系統(tǒng)(Robot Operating System)的英文縮寫。ROS是用于編寫機器人軟件程序的一種具有高度靈活性的軟件架構(gòu)。ROS的原型源自斯坦福大學(xué)的STanford
    的頭像 發(fā)表于 05-19 17:45 ?4229次閱讀
    <b class='flag-5'>ROS</b>/<b class='flag-5'>ROS</b> 2 <b class='flag-5'>介紹</b>

    如何初始化ROS并創(chuàng)立鏈接

    ROS1完成了介紹。 對ROS的Simulink支持包括一個Simulink塊庫,用于為指定的主題發(fā)送和接收
    的頭像 發(fā)表于 11-15 17:26 ?472次閱讀
    如何初始化<b class='flag-5'>ROS</b>并創(chuàng)立鏈接

    Unity與ROS鏈接介紹

    對于ROS而言,其最常用的就是Topic話題以及Service兩個了。之前我們在了解Unity Robotics Hub時候就了解到基本的Unity和ROS的通訊,下面我們來詳細介紹一下Unity
    的頭像 發(fā)表于 11-17 17:22 ?919次閱讀
    Unity與<b class='flag-5'>ROS</b>鏈接<b class='flag-5'>介紹</b>

    ROS核心框架介紹

    ROS核心框架 對于第一個問題,我也沒仔細研究過源碼,核心代碼基本由python和C++組成,運用了xmlrpc機制,每個運行的節(jié)點可以理解成一個進程。進程間通訊有些是共享內(nèi)存的方式(比如
    的頭像 發(fā)表于 11-21 18:07 ?933次閱讀
    <b class='flag-5'>ROS</b>核心框架<b class='flag-5'>介紹</b>

    ROS通信接口機制介紹

    ROS通信接口 接口可以讓程序之間的依賴降低,便于我們使用別人的代碼,也方便別人使用我們的代碼,這就是ROS的核心目標,減少重復(fù)造輪子。 ROS有三種常用的通信機制,分別是話題、服務(wù)、動作,通過
    的頭像 發(fā)表于 12-01 15:03 ?761次閱讀
    <b class='flag-5'>ROS</b>通信接口機制<b class='flag-5'>介紹</b>

    ros怎么設(shè)置環(huán)境變量

    設(shè)置ROS環(huán)境變量是使用ROS的重要步驟之一。本文將詳細介紹如何設(shè)置ROS環(huán)境變量,包括什么是環(huán)境變量、為什么要設(shè)置ROS環(huán)境變量、如何設(shè)置
    的頭像 發(fā)表于 12-28 13:52 ?1886次閱讀