美日韩一区二区三区_日韩视频区_欧美日韩精品一区二区在线播放_亚洲欧美另类在线_国产综合精品_国偷自产一区二区免费视频

推廣 熱搜: 廣場  Java  app  Word  營業  微信公眾號  北京代理記賬  商城  代理記賬  商標交易 

智能系統與技術指導書,教你零基礎動手創建自主移動機器人

   2023-04-23 石家莊記賬公司代理記賬1920
核心提示:智能系統與技術指導書,教你零基礎動手創建自主移動機器人本書的主要目的是教你如何從頭開始構建自主移動機器人。本章將從ROS基礎知識開始學習,包括如何安裝ROS,如何使用ROS和編寫基礎的應用程序,以及的基礎知識。本章內容是自主機器人項目的基礎

第1章 ROS入門

本書的主要目的是教你如何從頭開始構建自主移動機器人。我們將使用機器人操作系統( , ROS)對機器人進行編程,它的操作將在名為的仿真器上進行模擬。在接下來的章節中,還會介紹機器人的機械設計、電路設計、嵌入式編程并使用ROS進行高級軟件編程。

本章將從ROS基礎知識開始學習,包括如何安裝ROS,如何使用ROS和編寫基礎的應用程序,以及的基礎知識。本章內容是自主機器人項目的基礎。如果你已經了解了ROS的基礎知識,并且已經在系統上安裝了ROS,那么可以跳過這一章。但是,你仍然可以在以后瀏覽這一章來增強對ROS基礎知識的記憶。

本章將涵蓋以下主題:

·對ROS的概述。

·在 16.04.3上安裝ROS 。

·介紹、安裝和測試。

我們開始使用和ROS來對機器人編程吧!

1.1 技術要求

可以從以下鏈接獲得本章中提到的完整代碼:。

1.2 ROS概述

ROS是用于創建機器人應用程序的軟件框架,其主要目的是提供可以用于創建機器人應用程序的功能,創建的應用程序也可以被其他機器人再次使用。ROS由一系列可以簡化機器人軟件開發的軟件工具、軟件庫和軟件包組成。

ROS是BSD()許可的一個完整的開源項目,可用于研究和商業應用。雖然ROS表示機器人操作系統,但它并不是一個真正的操作系統。相反,它是一個提供了真實操作系統功能的元操作系統。以下是ROS提供的主要功能:

·消息傳遞接口:這是ROS的核心功能,它支持進程間通信。使用這種消息傳遞功能,ROS程序可以與其鏈接的系統進行通信并交換數據。下面的章節中,我們將學習更多關于在ROS程序/節點之間交換數據的技術術語。

·硬件抽象:ROS具有一定程度的抽象,使開發人員能夠創建與機器人無關的應用程序。這類應用程序可以用于任何機器人,因此開發人員只需要關心底層的機器人硬件。

·軟件包管理:把ROS節點以軟件包形式組織在一起,則稱為ROS軟件包。ROS軟件包由源代碼、配置文件、構建文件等組成。我們可以創建包、構建包和安裝包。ROS中有一個構建系統,可以幫助構建這些軟件包。ROS的軟件包管理使ROS的開發更加系統化和組織化。

·第三方軟件庫集成:ROS框架可與許多第三方軟件庫集成,如、PCL、等。這有助于開發者在ROS中創建各種各樣的應用程序。

·底層設備控制:使用機器人工作時,也可能需要使用底層設備,例如控制I/O引腳、通過串口發送數據等設備。這也可以使用ROS完成。

·分布式計算:處理來自機器人傳感器的數據所需的計算量非常大。使用ROS可以輕松地將計算分配到計算節點集群中。分配計算能力使處理數據的速度比使用單個計算機更快。

·代碼復用:ROS的主要目標是實現代碼復用。代碼復用促進了全球研發團隊的發展。ROS的可執行文件叫作節點。這些可執行文件被打包成一個實體,叫作ROS軟件包。一批軟件包集合叫作元軟件包,軟件包和元軟件包都可以共享和分發。

·語言獨立性:ROS框架可以使用當前流行的編程語言(如、C++和Lisp)。節點可以用任何一種語言來編寫,并且可以通過ROS框架進行無障礙通信。

·測試簡單:ROS有一個內置的單元/集成測試框架,用于測試ROS軟件包。

·擴展:ROS可以擴展到機器人中執行復雜的計算。

·免費且開源:ROS的源代碼是開放的,并且是完全免費的。ROS的核心部分,經BSD( )協議許可,可以在商業領域和不開源的產品上復用。

ROS是管道(消息傳遞)、開發工具、應用功能和生態系統的組合。ROS中有強大的開發工具,可以調試和可視化機器人數據。ROS具有內置的機器人應用功能,如機器人導航、定位、繪圖、操作等。它們有助于創建強大的機器人應用程序。

圖1-1顯示了ROS的組成。

圖1-1 ROS的組成

更多有關ROS的信息,請參考。

1.2.1 ROS框架

ROS框架主要分成三個層級:

·ROS文件系統。

·ROS計算圖。

·ROS社區。

ROS文件系統

ROS的文件系統主要介紹了硬盤上ROS文件的組織形式。其中,我們必須了解的主要有以下幾個方面:

·軟件包():ROS軟件包是ROS軟件框架的獨立單元。ROS軟件包可能包含源代碼、第三方軟件庫、配置文件等。ROS軟件包可以復用和共享。

·軟件包清單( ):清單文件(.xml)列出了軟件包的所有詳細信息,包括名稱、描述、許可信息以及最重要的依賴關系。

·消息(msg)類型:消息的描述存儲在軟件包的msg文件夾下。ROS消息是一組通過ROS的消息傳遞系統進行數據發送的數據結構。消息的定義存儲在擴展名為.msg的文件里。

·服務(srv)類型:服務的描述使用擴展名.srv存儲在srv文件夾下。該文件定義了ROS內服務請求和響應的數據結構。

ROS計算圖

ROS的計算圖是ROS處理數據的一種點對點的網絡形式。ROS計算圖中的基本功能包括節點、ROS控制器、參數服務器、消息和服務:

·節點(Node):ROS節點是使用ROS功能處理數據的進程。節點的基本功能是計算。例如,節點可以對激光掃描儀數據進行處理,以檢查是否存在碰撞。ROS節點的編寫需要ROS客戶端庫文件(如和)的支持,這將在下一節中討論。

·ROS控制器():ROS節點可以通過名為ROS控制器的程序相互連接。此程序提供計算圖其他節點的名稱、注冊和查找信息。如果不運行這個控制器,節點之間將無法相互連接和發送消息。

·參數服務器( ):ROS參數是靜態值,存儲在叫作參數服務器的全局位置。所有節點都可以從參數服務器訪問這些值。我們甚至可以將參數服務器的范圍設置為以訪問單個節點,或者設置為以訪問所有節點。

·ROS主題():ROS節點使用命名總線(叫作ROS主題)彼此通信。數據以消息的形式流經主題。通過主題發送消息稱為發布,通過主題接收數據稱為訂閱。

·消息():ROS消息是一種數據類型,可以由基本數據類型(如整型、浮點型、布爾類型等)組成。ROS消息流經ROS主題。一個主題一次只能發送/接收一種類型的消息。我們可以創建自己的消息定義并通過主題發送它。

·服務():我們看到使用ROS主題的發布/訂閱模型是一種非常靈活的通信模式,這是一種一對多的通信模式,意味著一個主題可以被任意數量的節點訂閱。在某些情況下,可能還需要一種請求/應答類型的交互方式,它可以用于分布式系統。這種交互方式可以使用ROS服務實現。ROS服務的工作方式與ROS主題類似,因為它們都有消息類型定義。使用該消息定義可以將服務請求發送到另一個提供該服務的節點。服務的結果將作為應答發送。該節點必須等待,直到從另一個節點接收到結果。

·ROS消息記錄包(Bag):這是一種用于保存和回放ROS主題的文件格式。ROS消息記錄包是記錄傳感器數據和處理數據的重要工具。這些包之后可以用于離線測試算法。

圖1-2顯示了在節點和控制器之間,ROS主題和ROS服務的工作流程。

圖1-2 ROS節點和ROS控制器之間的通信

從圖1-2可以看到,ROS控制器位于兩個ROS節點之間。我們必須記住的一件事是,在啟動ROS中的任何節點之前,應該先啟動ROS控制器。ROS控制器充當節點之間的中介,以交換關于其他ROS節點的信息,從而建立通信。假設節點1希望發布名為/xyz的主題,消息類型為abc。它將首先接近ROS控制器,說:“我將發布一個名為/xyz的主題,消息類型為abc,并共享其細節。”當另一個節點,比如節點2,希望訂閱消息類型為abc的相同主題/xyz時,控制器將共享關于節點1的信息,并分配一個端口來直接在這兩個節點之間啟動通信,而不需要與ROS控制器通信。

ROS服務的工作方式與之類似。ROS控制器類似DNS服務器,當第二個節點向第一個節點請求主題或服務時,它可以共享節點的詳細信息。ROS使用的通信協議是(),它使用的是標準TCP/IP套接字。

ROS社區

ROS社區由ROS開發人員和研究人員組成,他們可以創建和維護軟件包,并交換現有軟件包、新發布的軟件包和其他與ROS框架相關的新信息。ROS社區提供以下服務:

·發行版本():ROS發行版有一組特定版本的軟件包。本書中使用的發行版是ROS 。還有其他可用的版本,比如ROS 和,它們有一個可以安裝的特定版本。在每個發行版中維護軟件包更容易。在大多數情況下,發行版中的軟件包相對穩定。

·資源庫():在線資源庫是保存軟件包的地方。通常,開發人員在資源庫中保存一組類似的軟件包,稱為元軟件包。還可以將單個軟件包保存在獨立資源庫中。我們可以簡單地復制資源庫并構建或復用軟件包。

·ROS wiki:從ROS wiki幾乎可以獲得所有ROS文檔。通過使用ROS wiki(),可以從最基本的概念到最高級的編程來了解ROS。

·郵件列表( List):如果想獲得有關ROS的更新消息,可以訂閱ROS郵件列表()。還可以從ROS ()獲得最新的ROS消息。

·ROS應答:這與 網站非常相似。你可以在這個門戶中提出與ROS相關的問題,并且可能會得到來自世界各地開發人員的幫助()。

可以從ROS的官方網站上了解關于ROS的其他功能。現在,我們繼續介紹ROS的安裝過程。

1.2.2 在上安裝ROS

根據前面的討論,我們了解到ROS是元操作系統,需要安裝在主機系統上。ROS完全支持和,但對于和OS X的支持還處于實驗階段。表1-1列出了一些最新的ROS發行版本。

表1-1 ROS發行版本

下面我們將介紹在 16.04.3 LTS上安裝名為的ROS長期穩定支持(Long-Term , LTS)的發行版的過程。ROS Kame主要針對的是 16.04 LTS。在查看了以下說明之后,還可以在 18.04 LTS上最新的LTS 中找到設置ROS的說明。如果你是或OS X用戶,那么可以先在虛擬機()上安裝,然后再安裝ROS。的下載鏈接為。

你可以在上找到完整的操作說明。

安裝說明如下:

(1)配置資源庫,允許、和下載權限。可以用中的 & 工具進行配置。我們可以直接在 查找菜單下進行簡單搜索,然后按圖1-3所示勾選選項。

圖1-3 的 & 工具

(2)將系統設置為從接收ROS軟件包。ROS 版本僅支持 15.10和16.04。使用下面的命令將存儲到的apt庫列表:

(3)接下來,添加apt-key。apt-key用于管理密鑰列表,apt通過密鑰對軟件包進行認證。經過這些密鑰認證的軟件包將被認為是可信的。使用下面的命令可以將apt-key添加到ROS軟件包:

(4)添加了apt-key之后,必須更新軟件包列表。使用下面的命令添加并更新ROS軟件包和軟件包:

(5)更新了ROS軟件包之后,就可以開始安裝軟件包了。使用下面的命令安裝ROS必需的軟件包、開發工具和軟件庫:

(6)在桌面安裝完成之后,可能還需要安裝一些附加的軟件包。每個附加安裝的軟件包在書中后續對應的部分都會提到。安裝桌面需要花費一些時間。在ROS安裝完成之后,就已經完成了大部分工作。下一步就是初始化,有了它就可以很容易地安裝ROS資源包的依賴項:

(7)為了在當前的bash 下使用ROS工具和命令,可以在.文件中添加ROS環境變量。這將會在每個bash會話開始時執行。使用下面的命令添加ROS環境變量到.文件:

下面的命令將在當前下運行.腳本,并在當前下產生變化:

(8)在安裝軟件包的依賴項時有一個很好用的工具,這個工具需要單獨安裝。它僅需要一個命令就可以幫助你下載到很多ROS軟件包的資源樹:

最新的LTS 的安裝過程類似于前面的過程。可以同時安裝 18.04 LTS和。你可以在上找到完整的說明。

在完成ROS的安裝之后,我們將討論如何在ROS中創建示例軟件包。在創建軟件包之前,先要建立ROS工作區,然后在ROS工作區中創建軟件包。我們將采用構建系統,是一系列工具的集合,用于在ROS中創建軟件包。構建系統能夠從源代碼生成可執行文件或共享庫。ROS 使用構建系統來創建軟件包。下面,我們先來看看是什么。

1.2.3 什么是

是ROS的官方編譯構建系統。在之前,ROS用系統來構建軟件包。在最新版本的ROS中,代替了。結合了宏命令和腳本來提供和同樣的通用工作流程。提供了比系統更好的軟件包發布功能、更好的交叉編譯功能以及更好的可移植性。有關的更多信息,可以參考/。

工作區是一個文件夾,可以在其中對軟件包進行修改、構建以及安裝。

現在,我們來看如何創建ROS的工作區。

使用下面的命令創建名為的父目錄和名為src的子文件夾:

使用下面的命令將目錄切換到src文件夾。我們將在src文件夾中創建軟件包:

使用下面的命令初始化工作區:

在完成工作區初始化之后,使用下面的命令能夠直接(即使在沒有源文件的情況下)構建軟件包:

命令用于在src目錄中構建軟件包。構建軟件包之后,在目錄下可以看到一個文件夾和一個文件夾。可執行文件存儲在文件夾中。在文件夾中,有可以在ROS環境下添加工作區的腳本文件。

1.2.4 創建ROS軟件包

在本節中,我們將介紹如何創建包含兩個節點的示例軟件包。其中一個節點用于在名為/的主題上發布 字符串消息,另一個節點訂閱該主題。

在ROS中使用命令可以創建 ROS軟件包。

軟件包會在src文件夾中創建,這個文件夾是我們在創建工作區的過程中創建的。在創建軟件包之前,使用下面的命令先切換到src文件夾:

使用下面的命令創建包及依賴項,該依賴項包含標準的消息定義。ROS的客戶端庫是:

在軟件包成功創建后,會返回以下信息:

在包成功創建之后,需要添加兩個節點或腳本,用于演示主題的訂閱和發布。

首先,使用下面的命令在包中創建名為的文件夾:

切換到文件夾,并創建名為r.py和er.py的腳本,用于發布和訂閱 消息。下面將介紹這些腳本或節點的代碼和函數。

r.py

節點r.py主要發布歡迎信息 到主題/中,發布頻率為10Hz。

圖1-4顯示了兩個ROS節點之間的相互作用。

圖1-4 發布者和訂閱者節點之間的通信

本書的完整代碼還可在獲得。

此節點代碼的分步解釋如下:

(1)如果要編寫ROS 節點,則需要導入。它包含的API,可以與ROS的主題、服務等相互作用。

(2)要從包中導入消息數據類型才能發送 消息。包對標準的數據類型有一個消息定義。使用下面的命令進行導入:

(3)下面的代碼創建了主題的一個發布對象。消息類型是,的值為10。如果設置的訂閱頻率太低導致來不及接收數據,可以調整選項:

(4)下面這行代碼對所有ROS節點進行初始化,并給每個節點命名。如果運行過程中兩個節點有相同的節點名稱,那么其中一個將會關閉。如果想要同時運行這兩個節點,可以如下使用=True標志:

(5)下面這行代碼創建速率對象r。在對象Rate中使用()方法,可以更新設定的循環速率。這里,我們設定速率為10:

(6)下面的循環將檢查是否構建了.()標志。接下來,執行這個循環。按下<Ctrl+C>時,循環退出。

在循環內部,消息 會被打印在終端上,并同時以10Hz的速率發布在主題上:

(7)下面的代碼對的進行檢查并調用()函數。代碼將持續執行(),當按下<Ctrl+C>時,節點將關閉:

在發布主題之后智能系統與技術指導書,教你零基礎動手創建自主移動機器人,我們將介紹如何訂閱主題。接下來的部分介紹訂閱主題的相關代碼。

er.py

免責聲明:本文系轉載自其它媒體,版權歸原作者所有;旨在傳遞信息,不代表本站的觀點、立場和對其真實性負責。如需轉載,請聯系原作者。如果來源標注有誤或侵犯了您的合法權益等其他原因不想在本站發布,來信即刪。

 
反對 0舉報 0 收藏 0 打賞 0評論 0
 
更多>同類資訊
推薦圖文
推薦資訊
點擊排行
合作伙伴
網站首頁  |  關于我們  |  聯系方式  |  使用協議  |  版權隱私  |  網站地圖  |  排名推廣  |  廣告服務  |  積分換禮  |  網站留言  |  RSS訂閱  |  違規舉報  |  冀ICP備2023006999號-8
 
主站蜘蛛池模板: 91色一区二区三区 | 久国产| 久草在线高清视频 | 亚洲精品a在线观看 | 男女亲热网站 | 伊人久操视频 | 成人午夜激情视频 | 国产成人av一区二区 | 国产亚洲精品久久久久婷婷瑜伽 | 你下面好大好硬好想要 | 久色亚洲 | 免费黄色短视频网站 | 欧美1区2区 | 国产精品视频久 | 亚洲白嫩在线观看 | 中国大陆一级毛片 | 国产69精品99久久久久久宅男 | 电影av在线 | 蜜桃91麻豆 | 91精品国产日韩91久久久久久360 | 中文字幕在线观看视频一区 | 91短视频在线播放 | 免费激情网站 | 日本高清黄色片 | www日韩大片 | 国产一区二区视频在线播放 | 国产一区二区不卡视频 | 色八影院 | 久久久久一区二区三区四区五区 | 精品国产乱码久久久久久久 | 国产精品久久99精品毛片三a | 日本精品婷婷久久爽一下 | 欧美久久久久久久久 | 进去了(高h) | 日本一区二区不卡高清 | 九一免费国产 | 日韩色视频在线观看 | 欧美一级毛片大片免费播放 | 亚洲一区二区三区在线 | 999久久久免费视频 久久精品国产精品亚洲 | www.91成人 |