2017年7月ROS學(xué)習(xí)資料小結(jié)

      網(wǎng)友投稿 705 2022-05-30

      《孫子兵法·謀攻篇》:“上兵伐謀,其次伐交,其次伐兵,其下攻城;攻城之法為不得已。”

      任何發(fā)生在自己國(guó)土上的戰(zhàn)爭(zhēng),即便勝利,也飽含屈辱。

      ----~~~~----Gazebo 8

      使用ROS / Gazebo版本的組合

      介紹

      本文檔概述了使用不同版本的ROS與不同版本的Gazebo結(jié)合使用的選項(xiàng)。建議在安裝Gazebo ROS包裝機(jī)之前閱讀它。

      重要!簡(jiǎn)單分析一個(gè)快速正確的決定

      如果您計(jì)劃使用特定版本的ROS,并且沒有理由使用特定版本的Gazebo,則應(yīng)繼續(xù)?安裝gazebo_ros_pkgs?教程,該教程說明如何通過ROS安裝完全支持的Gazebo版本。

      警告:請(qǐng)注意,使用與ROS存儲(chǔ)庫交付的官方版本不同的Gazebo版本可能會(huì)導(dǎo)致ROS程序包的沖突或其他集成問題。

      Gazebo版本和ROS集成

      Gazebo是一個(gè)獨(dú)立的項(xiàng)目,如boost,ogre或ROS使用的任何其他項(xiàng)目。通常,在每個(gè)ROS發(fā)行周期開始時(shí)(例如gazebo7ROS Kinetic)提供的Gazebo的最新主要版本被選為完全集成和支持的官方Gazebo,并將在ROS發(fā)行的整個(gè)生命周期中保留。

      Gazebo開發(fā)與ROS不同步,所以每個(gè)新的主要版本的Gazebo必須在ROS發(fā)布之前被釋放。以下部分介紹如何使用不同版本的Gazebo的ROS。

      需要注意的是GazeboABI穩(wěn)定政策遵循?語義版本理念,其中具有相同的主號(hào)碼(所有版本,,?,...)使用相同的ROS發(fā)行時(shí)是二進(jìn)制兼容的,因此可以互換。gazebo_6.0.0gazebo_6.1.0gazebo_6.0.1

      安裝Gazebo

      GazeboUbuntu包

      安裝Gazebo的最簡(jiǎn)單方法是使用包。有兩個(gè)主要的倉庫主持Gazebo包:一個(gè)是另一個(gè)。在寫作時(shí):packages.ros.orgpackages.osrfoundation.org

      packages.ros.org

      Indigo:主機(jī)Gazebo版本2.x包。

      Kinetic:主機(jī)或使用Gazebo版本7.x包。

      Lunar:主機(jī)或使用Gazebo版本7.x包。

      packages.osrfoundation.org

      Gazebo5.x系列(包名gazebo5)

      Gazebo6.x系列(包名gazebo6)

      Gazebo7.x系列(包名gazebo7)

      Gazebo8.x系列(包名gazebo8)

      這意味著包含osrfoundation存儲(chǔ)庫不是嚴(yán)格需要獲得GazeboUbuntu包。它可以從ros存儲(chǔ)庫安裝。

      Gazebo從源頭建成

      如果您從源代碼編輯了Gazebo版本,請(qǐng)注意,根據(jù)使用的存儲(chǔ)庫分支(gazebo6,,gazebo7...),您的Gazebo將與gazebo_ros_pkgs(和所有其他在Gazebo頂部編譯的ROS包)二進(jìn)制兼容,只有主版本匹配您的本地分支存儲(chǔ)庫和ROS發(fā)行版中使用的Gazebo版本。例如,如果您是從Gazebo分支編譯,您可以使用?Indigo(使用Gazebo2系列)的禮物。gazebo_2.0gazebo_ros_pkgs

      請(qǐng)注意,如果您使用default分支,您可能不是與任何發(fā)布的包二進(jìn)制兼容,所以您將需要一個(gè)catkin工作區(qū)才能獲得有效的gazebo_ros_pkgs。

      使用默認(rèn)的Gazebo版本進(jìn)行ROS分發(fā)

      對(duì)于需要運(yùn)行特定版本的ROS并且想要使用所有GazeboROS相關(guān)軟件包的用戶,這是推薦的部分:

      Lunar

      ROS Lunar主持或使用7.x版本的Gazebo。對(duì)于完全集成的ROS系統(tǒng),我們建議使用7.x版本的Gazebo。繼續(xù)進(jìn)行下去的方法就是使用ROS庫(它會(huì)自動(dòng)安裝gazebo7),并且還沒有使用osrfoundation庫。

      Kinetic

      ROS Kinetic主機(jī)或使用7.x版本的Gazebo。對(duì)于完全集成的ROS系統(tǒng),我們建議使用7.x版本的Gazebo。繼續(xù)進(jìn)行下去的方法就是使用ROS庫(它會(huì)自動(dòng)安裝gazebo7),并且還沒有使用osrfoundation庫。

      Indigo

      ROS Indigo擁有Gazebo的2.x版本。對(duì)于完全集成的ROS系統(tǒng),我們建議使用2.x版本的Gazebo。繼續(xù)進(jìn)行下去的方法就是使用ROS庫(它會(huì)自動(dòng)安裝gazebo2),并且還沒有使用osrfoundation庫。

      用ROS使用具體的Gazebo版本

      2017年7月ROS學(xué)習(xí)資料小結(jié)

      警告!使用此選項(xiàng),您將無法使用ROS deb存儲(chǔ)庫中與Gazebo相關(guān)的任何ROS Ubuntu軟件包。相當(dāng)于gazebo_ros_pkgs?可以從debian包安裝,但所有其他軟件(如?turtlebot_gazebo)都必須從源代碼構(gòu)建。感謝catkin工作區(qū),?這很容易做到。

      如果真的需要,可以使用Gazebo和ROS的任何特定版本:

      Gazebo8.x系列

      OSRF存儲(chǔ)庫提供了構(gòu)建在包上方的ROS / Kinetic或ROS / LunarGazebo包裝器()的版本。使用它們的步驟是:-gazebo8-gazebo8_ros_pkgsgazebo8

      將osrfoundation存儲(chǔ)庫添加到源列表中。

      安裝從osrfoundation庫,這將安裝包。ros-$ROS_DISTRO-gazebo8-ros-pkgsgazebo8

      使用catkin工作區(qū)編譯源代碼中使用的其他軟件。

      Gazebo7.x系列

      OSRF存儲(chǔ)庫提供了構(gòu)建在包上方的ROS / IndigoGazebo包裝器()的版本。使用它們的步驟是:-gazebo7-gazebo7_ros_pkgsgazebo7

      將osrfoundation存儲(chǔ)庫添加到源列表中。

      安裝從osrfoundation庫,這將安裝包。ros-indigo-gazebo7-ros-pkgsgazebo7

      使用catkin工作區(qū)編譯源代碼中使用的其他軟件。

      常問問題

      我沒有使用ROS,應(yīng)該使用哪個(gè)版本?

      如果您不需要ROS支持,推薦的版本是可以使用osrfoundationrepo安裝的最新版本?。

      我想使用子彈/ simbody / dart物理引擎,我應(yīng)該使用哪個(gè)版本的Gazebo?

      從gazebo4Ubuntu軟件包中內(nèi)置了子彈和simbody支持,所以請(qǐng)按照上述說明gazebo4與ROS結(jié)合使用。Dart仍然需要從源頭開始安裝Gazebogazebo3,從而可以使用gazebo3或更高版本,并按照上述說明使其與ROS一起使用。

      我需要使用Gazebo8和ROS Kinetic / Lunar,我該怎么辦?

      警告!使用此選項(xiàng),您將無法使用ROS deb存儲(chǔ)庫中與Gazebo相關(guān)的任何ROS Kinetic軟件包。要從源頭構(gòu)建它們的方式。感謝catkin工作區(qū),這很容易做到。

      如果您需要一些僅在Gazebo版本8.x中出現(xiàn)的功能,則有一種安裝方式gazebo8和ROS Kinetic / Lunar。請(qǐng)按照有關(guān)如何使用ROS與Gazebo8軟件包在同一文檔的說明。

      我需要使用Gazebo7和ROSIndigo,我該怎么辦?

      警告!使用此選項(xiàng),您將無法使用ROS deb存儲(chǔ)庫中與Gazebo相關(guān)的ROS Indigo軟件包。要從源頭構(gòu)建它們的方式。感謝catkin工作區(qū),這很容易做到。

      如果您需要一些僅在Gazebo版本7.x中顯示的功能,則有一種安裝方式gazebo7和ROS Indigo。請(qǐng)按照有關(guān)如何使用在同一文檔中使用Raze與Gazebo7的說明。

      一些ROS包與GazeboX ROS Wrappers沖突!

      請(qǐng)注意,每個(gè)ROS分布都被設(shè)計(jì)為與特定版本的Gazebo一起使用(gazebo7在Kinetic中)。當(dāng)有人選擇使用與ROS發(fā)行版中推薦的不同版本的Gazebo時(shí),可能會(huì)出現(xiàn)問題,其中一些可能無法解決。

      如果在嘗試安裝本文檔中描述的一個(gè)版本之后發(fā)現(xiàn)依賴沖突(例如使用RVIZ),則需要從源安裝ROS或Gazebo。

      ----~~~~----ROS2

      ROS 2

      機(jī)器人操作系統(tǒng)(ROS)是一組可幫助您構(gòu)建機(jī)器人應(yīng)用程序的軟件庫和工具。從驅(qū)動(dòng)程序到最先進(jìn)的算法,以及強(qiáng)大的開發(fā)人員工具,ROS具有您下一個(gè)機(jī)器人項(xiàng)目所需的功能。這都是開源的。

      在這里,您將找到有關(guān)如何安裝和使用ROS 2軟件的文檔,ROS 2是一個(gè)正在大力開發(fā)的新版本的ROS。有關(guān)ROS 2的更多信息,請(qǐng)參見下文。

      如果您正在尋找有關(guān)ROS 1的信息(即ROS,因?yàn)樗呀?jīng)存在了好幾年,現(xiàn)在您可能正在使用),請(qǐng)查看ROS網(wǎng)站或文檔維基。

      在繼續(xù)之前,請(qǐng)閱讀功能頁面了解當(dāng)前ROS 2版本中的內(nèi)容。

      安裝

      請(qǐng)參閱安裝頁面。

      教程

      ROS 2正在大力發(fā)展,所有版本目前都是“alpha”-prefixed。您不應(yīng)該期望今天從ROS 1切換到ROS 2,但您可以查看教程頁面,以查看系統(tǒng)在當(dāng)前狀態(tài)下可以執(zhí)行的操作的一系列示例。

      特約

      有關(guān)如何為ROS 2開發(fā)做出貢獻(xiàn)的詳細(xì)信息,請(qǐng)參閱貢獻(xiàn)頁面和開發(fā)人員指南。

      報(bào)告問題和提問

      請(qǐng)參閱聯(lián)系頁面。

      關(guān)于ROS 2

      自從ROS于2007年啟動(dòng)以來,機(jī)器人和ROS社區(qū)發(fā)生了很大變化。ROS 2項(xiàng)目的目標(biāo)是適應(yīng)這些變化,利用ROS 1的優(yōu)勢(shì),改善不了的。有一個(gè)關(guān)于ROS 2的動(dòng)機(jī)完整的文章在這里。

      當(dāng)前狀態(tài)

      ROS 2的Alpha版本目前正在進(jìn)行約6周的節(jié)奏,讓社區(qū)成員有機(jī)會(huì)對(duì)系統(tǒng)提供反饋。在高層次上,ROS 2的發(fā)展廣泛側(cè)重于為支持多個(gè)DDS中間件實(shí)施,多個(gè)操作系統(tǒng),多種編程語言以及與運(yùn)行ROS 1的系統(tǒng)共存的基礎(chǔ)奠定基礎(chǔ)。有關(guān)當(dāng)前功能的詳細(xì)信息,請(qǐng)參閱功能。

      有什么事情

      有關(guān)ROS 2的即將推出的功能的詳細(xì)信息,請(qǐng)參閱路線圖。

      在哪里可以找到更多信息

      有關(guān)ROS 2設(shè)計(jì)的各種文章在design.ros2.org,如:為什么選擇ROS 2.0?,ROS上DDS,和ROS 1和ROS 2之間變化。

      ROS 2的代碼是開源的,分為各種存儲(chǔ)庫。您可以在ros2 github組織上找到大多數(shù)存儲(chǔ)庫的代碼。

      以下是關(guān)于ROS 2的ROSCon會(huì)談,并提供有關(guān)ROS 2和各種演示的工作的信息:

      ----~~~~----ROS暑期學(xué)校課程及資料下載

      第1天 (2017年7月22日)(科學(xué)會(huì)堂)

      第2天(2017年7月23日)(科學(xué)會(huì)堂)

      第3天(2017年7月24日)

      第4天(2017年7月25日)

      第5天(2017年7月26日)

      第6天(2017年7月27日)

      第7天(2017年7月28日)

      第8天(2017年7月29日)

      ----~~~~----使用ROS進(jìn)行機(jī)器人編程學(xué)習(xí)網(wǎng)址

      http://robocademy.com/

      如果你喜歡機(jī)器人,而你想學(xué)習(xí)如何編程,那就是你的Meetup!

      ROS正在成為機(jī)器人編程的標(biāo)準(zhǔn)。所以你必須掌握ROS,如果你想在不久的將來在機(jī)器人工作。

      來到這個(gè)MeetUp,找到一個(gè)非常快的方式來學(xué)習(xí)ROS!

      您將需要攜帶筆記本電腦,因?yàn)檫@將是一個(gè)手寫教程。但不用擔(dān)心,您可以攜帶任何類型的筆記本電腦。本教程無需安裝。所有的編程都將在線完成。

      請(qǐng)?zhí)崆?0-15分鐘連接互聯(lián)網(wǎng),抓住一個(gè)不錯(cuò)的機(jī)會(huì)!

      ----~~~~----

      http://bluesat.com.au/a-dummys-guide-to-debugging-ros-systems/

      調(diào)試ROS系統(tǒng)的虛擬指南

      所以你寫了最終的ROS程序:經(jīng)過數(shù)千行代碼,你的機(jī)器人終將達(dá)到感覺,帶來奇點(diǎn)!

      一個(gè)接一個(gè)地啟動(dòng)你的節(jié)點(diǎn)。每一個(gè)使啟示錄越來越近。你輸入最后一個(gè)命令。和。而且什么也沒有。什么地方出了錯(cuò)?你會(huì)怎么找到,永遠(yuǎn)擠壓那個(gè)妨礙你勝利的時(shí)刻的錯(cuò)誤?這個(gè)博客試圖回答這些問題,更多*。

      在BLUEsat中,我們已經(jīng)有了我們分享復(fù)雜的ROS調(diào)試問題。當(dāng)您通過競(jìng)爭(zhēng)任務(wù)中途進(jìn)行時(shí),最好的時(shí)間會(huì)發(fā)生,隨著時(shí)間的推移。雖然這篇文章還會(huì)在較短的時(shí)間內(nèi)看看更常見的調(diào)試情況,并且易發(fā)生火災(zāi)的環(huán)境**。

      以下是我們成功部署以調(diào)試ROS環(huán)境的幾種工具和技術(shù)。

      保持冷靜和火焰!

      你以前可能已經(jīng)聽過這個(gè)消息,但是在調(diào)試時(shí)不重要的結(jié)論或者您沒有正確測(cè)試的修復(fù)程序非常重要。例如,Google有一個(gè)策略,可以回滾其服務(wù)上的更改,而不是嘗試推送修復(fù)。一個(gè)類似的想法適用于競(jìng)爭(zhēng)或時(shí)間壓力的情況:確保你已經(jīng)想到通過這個(gè)補(bǔ)丁,從你的機(jī)器人刪除“不要?dú)⑷恕钡陌踩≡掚m如此,不幸的是,回滾不太可能適用于競(jìng)爭(zhēng)情況,也不可能將您剛才 在機(jī)器人上啟動(dòng)的火災(zāi)推遲。所以我們不能只是復(fù)制谷歌,但我們應(yīng)該考慮一下我們?cè)谧鍪裁础?/p>

      基本上,在這種情況下您應(yīng)用的任何修補(bǔ)程序或配置修復(fù)程序都是計(jì)算出的風(fēng)險(xiǎn),您應(yīng)該確保在做某些事情之前了解這些風(fēng)險(xiǎn)。在去年的歐洲巡回賽挑戰(zhàn)賽中,我發(fā)現(xiàn)可以調(diào)整小型設(shè)置,重啟某些節(jié)點(diǎn),重新校準(zhǔn)系統(tǒng);?但是由于建立通信所需的時(shí)間,在任務(wù)期間強(qiáng)制循環(huán)流動(dòng)站太危險(xiǎn)了。同樣重新啟動(dòng)我們的驅(qū)動(dòng)系統(tǒng)或攝像機(jī)對(duì)我們的飛行員來說是非常具有破壞性的,所以只能在某些情況下完成,在這種情況下,通過不修復(fù)系統(tǒng)造成的損壞可能會(huì)更糟。話雖如此,在關(guān)鍵的攝像機(jī)失敗后,我們?cè)噲D以編程方式對(duì)該設(shè)備進(jìn)行電源循環(huán) - 這個(gè)決定是指攝像機(jī)足夠重要,可以嘗試這樣一個(gè)危險(xiǎn)的舉動(dòng)。

      在非時(shí)間壓力的情況下,您可以更靈活。可以測(cè)試不同的選項(xiàng),看看它們是否工作。這是因?yàn)樗鼈儾粫?huì)損壞您的機(jī)器人。然而,結(jié)構(gòu)化的方法通常對(duì)于那些更復(fù)雜的錯(cuò)誤是有益的。我經(jīng)常發(fā)現(xiàn),當(dāng)我調(diào)試間歇性或難以檢測(cè)到的問題,很容易就會(huì)失去跟蹤我嘗試過的結(jié)果,或者得到結(jié)果。我發(fā)現(xiàn)一個(gè)非常有用的技術(shù)是記錄我在做什么,就像我所做的那樣,特別是如果問題包括傳感器數(shù)據(jù)。

      基本上主要的一點(diǎn)也是保持頭腦清晰,并在行動(dòng)之前考慮后果。了解風(fēng)險(xiǎn),并準(zhǔn)備好您的E-Stop按鈕!現(xiàn)在看看可以用來幫助你調(diào)試的一些工具。

      抓住你的RQT

      方便的“?rqt?”工具是ROS調(diào)試器的瑞士軍刀。在時(shí)間壓力和非時(shí)間壓力的調(diào)試中,它節(jié)省了很多次。在2016年歐洲巡回賽挑戰(zhàn)賽中,我是在調(diào)試臺(tái)的不間斷的伙伴,提供了許多有用的見解和許多有用的診斷數(shù)據(jù)。(一個(gè)標(biāo)準(zhǔn)的BLUEsat漫游者駕駛?cè)藛T由駕駛漫游者的飛行員組成,一名副駕駛 - 跟蹤任務(wù)目標(biāo),飛行員位置,并管理飛行員的通訊;以及一個(gè)調(diào)試器,用于監(jiān)視流動(dòng)站的狀態(tài)軟件和管理不同運(yùn)行的ROS節(jié)點(diǎn))。

      RQT使用終端中的“rqt”命令運(yùn)行,并且包含可通過插件菜單加載的一系列小部件??。下面我將簡(jiǎn)要介紹一些必須有用的小部件。

      RQT的第一個(gè)工具是節(jié)點(diǎn)圖。此小部件將您的ROS圖中的所有節(jié)點(diǎn)描繪為橢圓形,并將所有主題作為正方形。方向箭頭表示哪些節(jié)點(diǎn)正在廣告或訂閱主題。您還可以選擇僅顯示當(dāng)前連接到發(fā)布者和訂戶(活動(dòng))的主題,或僅顯示節(jié)點(diǎn)而不顯示主題信息。

      當(dāng)我開始調(diào)試ROS問題時(shí),節(jié)點(diǎn)圖是我看到的第一件事情之一。一目了然,我可以看到哪些節(jié)點(diǎn)正在運(yùn)行,如果兩個(gè)節(jié)點(diǎn)正確連接。令人驚訝的是,ROS問題的頻率可以像沒有運(yùn)行的節(jié)點(diǎn)一樣簡(jiǎn)單(或者當(dāng)不應(yīng)該運(yùn)行時(shí))。該圖還允許我們看到節(jié)點(diǎn)是否正確連接 - 拼寫錯(cuò)誤的主題名稱當(dāng)然不會(huì)在代碼中跳出來,但它在圖表中直接顯示為缺少的一個(gè)鏈接。

      如果我們使用節(jié)點(diǎn)圖找不到我們的問題,那么?下一個(gè)小部件通常會(huì)有幫助。該主題監(jiān)視器??是較年輕,更好地組織同級(jí)rostopic回聲命令行工具。它顯示所有當(dāng)前廣告主題的列表,并允許您監(jiān)視它們。除了每個(gè)主題都是一個(gè)復(fù)選框,當(dāng)選中訂閱我們的主題,顯示其完整的輸出以及它使用的帶寬和發(fā)布的頻率。

      這對(duì)于檢查正確的信息是否正在通過您的ROS網(wǎng)絡(luò)而言非常有用,而無需在所有節(jié)點(diǎn)中添加ROS_INFO調(diào)試。在BLUEtongue Rover上,我們發(fā)布了大量的診斷信息作為ROS主題(這里有一點(diǎn)更多)。其中一些用于通過GUI向我們的飛行員提供信息,但如果我們需要了解細(xì)節(jié),那么RQT可以提供大量豐富的信息。

      除了診斷信息之外,主題監(jiān)視器可用于查找網(wǎng)絡(luò)中的問題。一個(gè)常見的情況是沒有實(shí)際發(fā)布任何消息的節(jié)點(diǎn) - 在這種情況下,它可能無法正確連接,您應(yīng)該查看ROSWTF部分。您還可以看到節(jié)點(diǎn)是否發(fā)布錯(cuò)誤的消息類型,或者是否有任何值不正確。

      最后,您還可以使用主題監(jiān)視器來識(shí)別潛在的帶寬問題,盡管您應(yīng)該記住,在這樣做時(shí),rqt將會(huì)訂閱主題本身,這可能會(huì)加劇問題。

      RQT??Message Publisher是??主題監(jiān)視器的?邪惡雙胞胎。顧名思義,它允許您發(fā)布消息,為命令行rostopic pub命令提供非常相似的功能??- 您可以選擇主題,消息類型和頻率,然后輸入要發(fā)送的數(shù)據(jù)。然而,它還提供了一些額外的視覺輔助工具來加快調(diào)試過程。

      首先,它預(yù)先填充主題列表和相應(yīng)的類型列表,使您可以快速發(fā)布到當(dāng)前在網(wǎng)絡(luò)中的任何用戶。這可以是壓力下的救生員,并且阻止您不斷提醒自己,如果該cmd_vel消息是geometry_msgs / Twist?? 或geometry_msgs / TwistStamped。

      一旦您選擇了消息類型,它還將顯示該消息的字段,使其更簡(jiǎn)單地填寫這些更復(fù)雜的消息。它還記住以前發(fā)送的消息,允許您快速重新發(fā)送。如果您需要執(zhí)行類似發(fā)送特定消息集的操作,或者在事件發(fā)生后快速啟用消息,這可能會(huì)很好。

      最后,如果您是高級(jí)用戶或需要發(fā)送更復(fù)雜的消息,則可以在“表達(dá)式”字段中輸入有效的python表達(dá)式,而不是實(shí)際值。這包括時(shí)間,數(shù)學(xué)或隨機(jī)模塊中的任何方法。此外,它還為您提供自動(dòng)計(jì)數(shù)器i(請(qǐng)參閱上述圖像的示例)。

      我將在RQT調(diào)試工具中討論的最后一個(gè)工具是TF Tree。如果您使用ROS的變換系統(tǒng),該工具很有用??,如果您不想跳過本節(jié)。

      TF樹顯示您的變換的連接結(jié)構(gòu),以及哪個(gè)節(jié)點(diǎn)發(fā)布給定的幀,最后一次更新,以及系統(tǒng)中最舊的變換。

      我用過的最好的用法是檢測(cè)圖中的差距。例如,如果您沒有向joint_state發(fā)布任何關(guān)于它的信息,那么ROS的robot_state_publisher將不會(huì)發(fā)布非固定聯(lián)合的轉(zhuǎn)換??,這可能導(dǎo)致無法訪問的轉(zhuǎn)換。如果發(fā)生這種情況,最好的方法往往是返回并檢查以確保要發(fā)布的任何節(jié)點(diǎn)正在正常運(yùn)行。通過查看平均速率和??最近的變換值來識(shí)別轉(zhuǎn)換超時(shí)的原因也很有用。

      找到自己與RViz

      RQT是一個(gè)非常有用的日常調(diào)試工具,但是如果您正在處理非常可視化的信息,例如點(diǎn)云或軟件認(rèn)為機(jī)器人的不同部分,那么需要更強(qiáng)大的功能。那就是RViz進(jìn)入的地方,它是一個(gè)3D場(chǎng)景,您可以在其中可視化不同類型的ROS數(shù)據(jù)。除了URDF機(jī)器人模型,RViz還支持點(diǎn)云,占用網(wǎng)格等等。基本上如果您想要可視化的主題是ros-desktop的一部分,那么您可以在RViz中看到它。(注意:如果您真的想使用RQT,您可以使用RViz作為RQT插件)。

      RViz實(shí)際上在ROS Wiki上有一些合理的教程,所以我只是在這里給出懸崖的筆記。RViz的關(guān)鍵特性是能夠加載不同的ROS消息,并相對(duì)于彼此進(jìn)行可視化。如果您嘗試調(diào)試與本地化或自動(dòng)化相關(guān)的任何操作,如果您的機(jī)器人認(rèn)為它在錯(cuò)誤的地方或傳感器數(shù)據(jù)有問題,您可以快速解決問題,這很有用。作為RViz多功能性的一個(gè)例子,我們?cè)?016年歐洲巡回賽挑戰(zhàn)賽的“盲人導(dǎo)航”任務(wù)中利用它來顯示相對(duì)于流動(dòng)站估計(jì)位置的單個(gè)LIDAR數(shù)據(jù)平面(在該任務(wù)中禁止攝像機(jī)進(jìn)給或全3D傳感器可視化) )。我們還廣泛使用它來調(diào)試LIDAR傳感器輸入(見下文)和各種SLAM解決方案。

      ROSWTF!

      如果你有奇怪的連接問題或節(jié)點(diǎn),否則似乎正常工作,那么roswtf工具就是你的家伙/ gal。基本上,ROSWTF旨在成為您一站式商店,用于識(shí)別您的ROS系統(tǒng)中的問題,盡管我的經(jīng)驗(yàn)是不完整的。然而,它真正的好處是檢測(cè)您的ROS網(wǎng)絡(luò)的任何設(shè)置或網(wǎng)絡(luò)問題。

      一個(gè)這樣的問題是您的ROS網(wǎng)絡(luò)上的機(jī)器無法識(shí)別對(duì)方的主機(jī)名。如果您沒有像DHCP或DNS在機(jī)器之間共享這些東西,或者您的計(jì)算機(jī)的DNS名稱與本地程序認(rèn)為您的主機(jī)名不匹配,則可能會(huì)發(fā)生這種情況。這是一個(gè)難以檢測(cè)的問題,因?yàn)楣?jié)點(diǎn)通常會(huì)連接并正常運(yùn)行,直到他們嘗試與其他機(jī)器上的節(jié)點(diǎn)通信為止。ROSWTF會(huì)發(fā)現(xiàn)這很難找到問題。

      在大多數(shù)情況下,有兩種方法來解決這個(gè)問題,第一種是將本地機(jī)器的ROS_HOST環(huán)境變量配置為其IP地址,第二種是修復(fù)主機(jī)名解析,使機(jī)器可以找到對(duì)方。后者可以通過在/ etc / hosts文件中添加條目??或更新本地DNS服務(wù)器來完成。在BLUEsat中,我們傾向于使用環(huán)境變量選項(xiàng)作為我們的網(wǎng)絡(luò)設(shè)置通常意味著我們不使用DHCP,并且擁有主機(jī)知道自己的ip意味著我們不必在我們的網(wǎng)絡(luò)中的每臺(tái)機(jī)器上更新??/ etc / hosts?添加一個(gè)新的主機(jī)。

      roswtf?可以檢測(cè)到的其他問題??是:配置錯(cuò)誤的ROS_MASTER節(jié)點(diǎn),實(shí)際網(wǎng)絡(luò)問題和ros啟動(dòng)文件配置問題。如果一切都看起來應(yīng)該是工作,但不是,??roswtf?是工作的工具!

      用GDB和Valgrind深入挖掘

      不用說,如果你已經(jīng)經(jīng)歷了其他步驟,你的機(jī)器人還在著火,你可能沒有太多的機(jī)器人。GDB和Valgrind是最適合初始測(cè)試和開發(fā)的工具,但是當(dāng)您的機(jī)器人??不起火時(shí),它們非常有用。

      這兩個(gè)工具本身都是主題,我建議您閱讀有關(guān)各個(gè)工具(gdb,valgrind)的完整教程,以便更好地了解它們。在這里,我們將主要介紹如何在ROS環(huán)境中使用這兩種工具。

      為了有效地使用這些工具之一,您必須首先使用調(diào)試符號(hào)重新編譯代碼。這允許工具向您提供有關(guān)行號(hào)的信息,以及可能發(fā)生錯(cuò)誤的代碼片段。要重新編譯啟用了調(diào)試符號(hào)的catkin工作區(qū),您可以運(yùn)行以下命令。

      1

      2

      $ catkin_make -DCMAKE_BUILD_TYPE=Debug

      [Catkin Output Goes Here]

      第二個(gè)難題實(shí)際上是找到可執(zhí)行文件來運(yùn)行它,使用gdb或valgrind(不幸的是你不能在rosrun上運(yùn)行g(shù)db)。如果您位于catkin工作區(qū)的根目錄,那么可執(zhí)行文件應(yīng)位于??devel / lib / / 中。這意味著您可以使用以下命令使用gdb運(yùn)行節(jié)點(diǎn):

      1

      $ gdb devel /lib/ [ros_package_name]/[node_name]

      然后,您可以按照gdb中的正常方式逐步執(zhí)行程序。同樣,您可以使用以下命令運(yùn)行valgrind:

      1

      $ valgrind --leak-check= yes devel /lib/ [ros_package_name]/[node_name]

      我發(fā)現(xiàn)當(dāng)我試圖調(diào)試segfaults,奇怪的輸出或意想不到的行為時(shí),我傾向于使用gdb;?而我?guī)缀鯇iT使用valgrind來查找內(nèi)存泄漏和數(shù)組溢出。它們是調(diào)試C ++代碼的關(guān)鍵工具,我強(qiáng)烈建議您閱讀更多關(guān)于它們!

      現(xiàn)在去獲得這個(gè)奇點(diǎn)!

      所有這些工具在我在BLUEsat期間對(duì)我來說非常有用,特別是在歐洲漫游挑戰(zhàn)賽的任務(wù)中。我希望您下次嘗試創(chuàng)建奇點(diǎn)時(shí),甚至當(dāng)您正在調(diào)試正常的ROS代碼時(shí),您會(huì)發(fā)現(xiàn)它們有幫助。如果沒有,這里只是用很多這些工具刮掉了你可以做的事情,我鼓勵(lì)讀者對(duì)所有這些工具進(jìn)行更深入的實(shí)驗(yàn)和深入探討!

      * BLUEsat UNSW及其成員(大多數(shù))不贊同啟發(fā)啟示,并且對(duì)由于啟示相關(guān)調(diào)試而可能發(fā)生的任何死亡或全球范圍的災(zāi)難承擔(dān)全部責(zé)任。

      **??本文中的調(diào)試技巧不能在火災(zāi)中保證應(yīng)用安全。BLUEsat建議自由使用E-Stop系統(tǒng)。

      ----~~~~----

      ROS VSCode擴(kuò)展

      這Visual Studio代碼(VSCode)擴(kuò)展提供支持機(jī)器人操作系統(tǒng)(ROS)

      的發(fā)展。

      知識(shí)庫

      問題

      入門

      當(dāng)您打開一個(gè)catkin工作區(qū)或一個(gè)catkin工作區(qū)內(nèi)的文件夾時(shí),擴(kuò)展名將自動(dòng)啟動(dòng)。

      ROS發(fā)行版將自動(dòng)從父環(huán)境確認(rèn),否則將

      無法自動(dòng)完成ROS?發(fā)行版的提示。

      要啟動(dòng)ROS主機(jī),請(qǐng)使用“ROS:?jiǎn)?dòng)核心”命令。左下角的“ROS主站”指示燈將顯示

      主站當(dāng)前是否正在運(yùn)行,您可以單擊此按鈕查看參數(shù)等。如果您點(diǎn)擊F5,您可以創(chuàng)建一個(gè)調(diào)試

      配置來運(yùn)行rosrun或roslaunch命令。

      首次打開工作區(qū)時(shí),擴(kuò)展將自動(dòng)創(chuàng)建catkin_make構(gòu)建任務(wù)并更新

      C ++和Python路徑。稍后可以使用相應(yīng)的命令重新運(yùn)行此過程。

      特征

      自動(dòng)ROS環(huán)境配置。

      允許啟動(dòng),停止和查看ROS主站狀態(tài)。

      catkin_make使用標(biāo)準(zhǔn)構(gòu)建命令運(yùn)行。

      創(chuàng)建catkin包。

      運(yùn)行rosrun或roslaunch

      語法高亮顯示.msg,.urdf和其他ROS文件。

      自動(dòng)添加ROS C ++包含和Python導(dǎo)入路徑。

      使用ROS?clang-format風(fēng)格格式化C ++?。

      命令

      ROS Summer School 2017 挑戰(zhàn)賽

      團(tuán)隊(duì)介紹

      隊(duì)名: STAR Robot

      單位: 上海科技大學(xué)自動(dòng)化與機(jī)器人中心

      成員: 陳宏宇, 曠皓飛, 龍肖靈

      實(shí)驗(yàn)環(huán)境

      硬件平臺(tái):

      Turtlebot 2(Kinect相機(jī)需要面向地面安裝)

      PC(i7處理器, 8G內(nèi)存)(PC的性能影響圖像處理的效率)

      軟件環(huán)境:

      Ubuntu 14.04

      ROS Indigo

      Python 2.7, OpenCV2.4.8

      Python以及OpenCV環(huán)境配置

      Python環(huán)境:Ubuntu 14.04 已預(yù)裝了Python2.7

      安裝OpenCV:

      軟件源安裝:

      sudo apt-get install python-numpy

      sudo apt-get install python-opencv

      也可使用pip或anaconda安裝。

      源碼安裝:到OpenCV官網(wǎng)下載所需的版本, 按照其教程來安裝。

      IDE配置:

      PyCharm:到PyCharm官網(wǎng)下載,按照其教程來安裝

      配置PyCharm:詳見ROS wiki IDEs

      算法簡(jiǎn)介

      Step 1 導(dǎo)入相機(jī)數(shù)據(jù)

      讀取相機(jī)數(shù)據(jù): 通過rospy訂閱 '/camera/rgb/image_raw' 這一Topic:?self.image_sub = rospy.Subscriber('/camera/rgb/image_raw', Image, self.image_callback)

      在回調(diào)函數(shù)里,利用cv_bridge將每一幀圖像轉(zhuǎn)換為opencv格式的圖片:?image = self.bridge.imgmsg_to_cv2(msg, desired_encoding='bgr8')

      Step 2 圖像預(yù)處理

      將原始圖像轉(zhuǎn)換為hsv圖像

      提取所需的顏色,將圖像轉(zhuǎn)換為二值圖像

      利用中值濾波和腐蝕來去除噪點(diǎn)

      將處理后的圖像切片,只保留相機(jī)下方某一范圍內(nèi)的區(qū)域

      Step 3 提取關(guān)鍵點(diǎn)

      對(duì)Step 2中產(chǎn)生的二值圖像進(jìn)行輪廓提取:

      提取圖片中的所有輪廓

      將輪廓面積小于一定值的輪廓去除(消除了某些濾波沒有清除的噪聲的影響)

      選取剩下的輪廓中面積最大的輪廓作為最終區(qū)域

      經(jīng)過上一步處理后,如果存在輪廓,取輪廓的質(zhì)心作為最終所追蹤的關(guān)鍵點(diǎn)

      Step 4 控制

      通過對(duì) '/cmd_vel_mux/input/teleop' Topic發(fā)送Twist類型的消息來控制小車移動(dòng)

      如果存在關(guān)鍵點(diǎn):利用P控制器控制小車移動(dòng)(線速度為定值,角速度受error影響,error為質(zhì)心的x值減去圖像中線的值(Kinect是320), error所乘的比例可以調(diào)節(jié),其決定角速度的大小)

      如果不存在關(guān)鍵點(diǎn): 在小車運(yùn)動(dòng)時(shí),若是線離開了相機(jī)的視野(該處指對(duì)原圖切片后的視野), 小車會(huì)立即停止運(yùn)動(dòng),執(zhí)行以下決策:

      向某一方向旋轉(zhuǎn)一定角度(根據(jù)最后一次error的正負(fù)來決定旋轉(zhuǎn)的方向(error小于0,逆時(shí)針;error大于0,順時(shí)針)),若旋轉(zhuǎn)過程中檢測(cè)到了關(guān)鍵點(diǎn)(即線又回到了視野內(nèi)),則繼續(xù)執(zhí)行之前的決策; 若沒有檢測(cè)到,則執(zhí)行2。

      前進(jìn)一段距離,停止(即到達(dá)終點(diǎn)或失敗)。

      參考資料

      Programming Robots with ROS: A Practical Introduction to the Robot Operating System

      我們對(duì)本書第12章中所提到的算法進(jìn)行了改進(jìn),用于此次挑戰(zhàn)賽

      致謝

      很感謝華東師范大學(xué)機(jī)器人運(yùn)動(dòng)與視覺實(shí)驗(yàn)室以及張新宇老師,還有暑期學(xué)校的組委會(huì)組織了此次活動(dòng)。感謝GaiTech贊助了本次暑期學(xué)校的挑戰(zhàn)賽。很高興能與很多對(duì)機(jī)器人感興趣的同學(xué)老師聚在一起交流學(xué)習(xí)。

      由于時(shí)間較短,我們的程序還存在很多問題,如果同學(xué)老師對(duì)我們的程序有任何問題和建議,或是對(duì)我們的團(tuán)隊(duì)感興趣,可以聯(lián)系我們,我們的聯(lián)系方式可以在我們實(shí)驗(yàn)室的主頁上找到(上海科技大學(xué)自動(dòng)化與機(jī)器人中心)

      --------唯有全力以赴,方能不負(fù)此生--------

      Ubuntu 視頻

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:AJAX后端數(shù)據(jù)
      下一篇:Java 編程技巧之?dāng)?shù)據(jù)結(jié)構(gòu)
      相關(guān)文章
      久久精品国产亚洲5555| 亚洲成a人片在线不卡一二三区| 精品韩国亚洲av无码不卡区| 亚洲一区二区三区四区视频| 亚洲国产人成网站在线电影动漫| 亚洲色大成网站www永久一区| 久久亚洲高清综合| 中文字幕精品无码亚洲字| 亚洲国产精品无码久久久久久曰| 亚洲AV永久无码精品网站在线观看| 亚洲中文字幕无码久久2020| 国产成人亚洲合集青青草原精品| 亚洲一区二区三区免费观看| 在线综合亚洲中文精品| 亚洲欧洲日韩极速播放| 亚洲中文字幕久久精品蜜桃| 亚洲色成人WWW永久在线观看| 国产精品亚洲一区二区麻豆| 亚洲色成人WWW永久在线观看| 亚洲GV天堂无码男同在线观看| 亚洲爆乳少妇无码激情| 精品久久久久久亚洲中文字幕| 校园亚洲春色另类小说合集| avtt亚洲天堂| 国产亚洲美女精品久久久| 亚洲一区无码中文字幕| 亚洲av综合avav中文| 亚洲福利视频一区| 亚洲性猛交xx乱| 亚洲熟伦熟女专区hd高清| 亚洲AV无码一区二区三区牲色| 国产亚洲视频在线| 中文字幕日韩亚洲| 亚洲国产国产综合一区首页| 中文字幕亚洲免费无线观看日本| 亚洲国产精品yw在线观看| 中文字幕在线日亚洲9| 香蕉视频亚洲一级| 国产亚洲色婷婷久久99精品91| 国产亚洲综合色就色| 久久精品国产亚洲av高清漫画|