移動機(jī)器人技術(shù)-課件 項目六:移動機(jī)器人高階認(rèn)知與實踐_第1頁
移動機(jī)器人技術(shù)-課件 項目六:移動機(jī)器人高階認(rèn)知與實踐_第2頁
移動機(jī)器人技術(shù)-課件 項目六:移動機(jī)器人高階認(rèn)知與實踐_第3頁
移動機(jī)器人技術(shù)-課件 項目六:移動機(jī)器人高階認(rèn)知與實踐_第4頁
移動機(jī)器人技術(shù)-課件 項目六:移動機(jī)器人高階認(rèn)知與實踐_第5頁
已閱讀5頁,還剩89頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

項目六:移動機(jī)器人高階認(rèn)知與實踐機(jī)器人操作系統(tǒng)ROS的安裝與基本操作任務(wù)一:機(jī)器人操作系統(tǒng)ROS的安裝與基本操作任務(wù)目標(biāo):1.了解ROS的基本概念和發(fā)展歷程2.掌握安裝Ubuntu系統(tǒng)和ROS系統(tǒng)的方法3.學(xué)會創(chuàng)建ROS工作空間和功能包4.學(xué)會使用ROS節(jié)點和編寫launch文件機(jī)器人操作系統(tǒng)ROS的安裝與基本操作知識儲備一機(jī)器人操作系統(tǒng)ROS的基本概念ROS(RobotOperatingSystem,機(jī)器人操作系統(tǒng))是一個面向機(jī)器人的開源操作系統(tǒng)。它能夠提供類似廣義理解操作系統(tǒng)的諸多功能,包括:硬件抽象底層設(shè)備控制常用函數(shù)的實現(xiàn)進(jìn)程間消息傳遞包管理提供跨計算機(jī)運行代碼所需的工具和庫函數(shù)ROS可以實現(xiàn)的功能機(jī)器人操作系統(tǒng)ROS的安裝與基本操作知識儲備一機(jī)器人操作系統(tǒng)ROS的基本概念ROS作為機(jī)器人的大腦,廣泛的應(yīng)用于多種不同功能的機(jī)器人的研發(fā),學(xué)習(xí)和掌握ROS已經(jīng)成為從事機(jī)器人開發(fā)與應(yīng)用相關(guān)工作的必備技能。常見的ROS機(jī)器人機(jī)器人操作系統(tǒng)ROS的安裝與基本操作知識儲備二ROS的發(fā)展歷程ROS起源于人工智能研究大發(fā)展階段。2000年,斯坦福大學(xué)人工智能實驗室開展了一系列相關(guān)研究項目,例如斯坦福人工智能機(jī)器人(StanfordArtificialIntelligenceRobot,STAIR)項目、個人機(jī)器人(PersonalRobots,PR)項目等。STAIR機(jī)器人不同版本PR2機(jī)器人仿真圖機(jī)器人操作系統(tǒng)ROS的安裝與基本操作知識儲備二ROS的發(fā)展歷程2007年,機(jī)器人公司W(wǎng)illowGarage和該項目組合作,提供了大量資源,將斯坦福大學(xué)項目中的軟件系統(tǒng)進(jìn)行擴(kuò)展與完善。從WillowGarage衍生出的公司機(jī)器人操作系統(tǒng)ROS的安裝與基本操作知識儲備二ROS的發(fā)展歷程ROS1.0版本發(fā)布于2010年,開發(fā)了一系列基于PR2機(jī)器人機(jī)器人相關(guān)的基礎(chǔ)軟件包。隨后基本上ROS每年都在更新,其中ROS1.0目前最新的版本為適配Ubuntu20.04LTS的ROSNoeticNinjemys。經(jīng)過十多年的發(fā)展,ROS逐漸趨于成熟,已經(jīng)初步進(jìn)入一種穩(wěn)定的發(fā)展?fàn)顟B(tài)。目前越來越多的機(jī)器人、無人車和無人機(jī)都開始采用ROS作為開發(fā)平臺。ROS的起源機(jī)器人操作系統(tǒng)ROS的安裝與基本操作知識儲備二ROS的發(fā)展歷程ROS的版本代號是按照字母順序編排的,并隨著Ubuntu系統(tǒng)的更新而更新。ROS1.0版本從BoxTurtle開始,到ROSNoeticNinjemys經(jīng)歷了13次更新。ROS版本發(fā)布時間建議對應(yīng)Ubuntu版本ROSBoxTurtle2010.03.02Ubuntu8.04(Hardy)ROSCTurtle2010.08.02Ubuntu9.04(Lucid)ROSDiamondback2011.03.02Ubuntu10.04(Lucid)ROSElectricEmys2011.08.30Ubuntu10.04(Lucid)ROSFuerteTurtle2012.04.23Ubuntu10.04(Lucid)ROSGroovyGalapagos2012.12.31Ubuntu12.04(Precise)ROSHydroMedusa2013.09.04Ubuntu12.04(Precise)ROSIndigoIgloo2014.07.22Ubuntu14.04(Trusty)ROSJadeTurtle2015.05.23Ubuntu15.04(Vivid)ROSKineticKame2016.05.23Ubuntu16.04(Xenial)ROSLunarLoggerhead2017.05.23Ubuntu17.04(Zesty)ROSMelodicMorenia2018.05.23Ubuntu18.04(Bionic)ROSNoeticNinjemys2020.05.23Ubuntu20.04(Focal)ROS1.0版本及發(fā)行時間機(jī)器人操作系統(tǒng)ROS的安裝與基本操作知識儲備二ROS的發(fā)展歷程在ROS1.0更新的過程中,開發(fā)者們也意識到了存在一些問題:沒有構(gòu)建多機(jī)器人系統(tǒng)的標(biāo)準(zhǔn)方法無法適用于Windows、MacOS等系統(tǒng)缺少實時性方面的設(shè)計等于是開發(fā)者將ROS1.0徹底重構(gòu),推出了基于數(shù)據(jù)分發(fā)服務(wù)(DataDistributionService,DDS)的ROS2.0版本。相比于ROS1.0,ROS2.0除了解決以上痛點外,更主要的是在引入DDS后,使得ROS2.0的通信機(jī)制在實時性、可靠性、靈活性、可拓展性等都有了較大提升。機(jī)器人操作系統(tǒng)ROS的安裝與基本操作知識儲備三ROS文件系統(tǒng)級1.ROS工作空間在ROS系統(tǒng)中,工作空間是用戶開發(fā)自己程序的文件夾(也稱目錄),簡單來說相當(dāng)于一個工程或者項目,由用戶自行創(chuàng)建。工作空間中存放各種用戶自己開發(fā)的功能包程序,文件是源代碼形式,用戶可自由修改。工作空間文件夾組成其中:src:存放代碼文件build:存放編譯過程中生成的中間文件devel:存放編譯過程中生成的目標(biāo)文件機(jī)器人操作系統(tǒng)ROS的安裝與基本操作知識儲備三ROS文件系統(tǒng)級2.ROS功能包在工作空間下的src文件夾中,存放了各種功能包文件。其中包括:綜合功能包(Metapackage):綜合功能包將特定應(yīng)用程序包的列表組合在一起,方便集中管理。功能包:功能包是ROS軟件組織的基本形式,是構(gòu)成ROS的基本單元,也是catkin編譯的基本單元。一個功能包可以包含多個可執(zhí)行文件(節(jié)點),還包含可執(zhí)行文件所需的所有文件,如依賴庫和配置文件等。功能包清單:每個包都有一個名為package.xml的清單文件。綜合功能包的pckage.xml文件由相關(guān)功能包的名稱組成。如果一個文件夾下有CMakeLists.txt和package.xml這兩個文件,則一般可以判斷該文件夾為功能包。機(jī)器人操作系統(tǒng)ROS的安裝與基本操作知識儲備三ROS文件系統(tǒng)級2.ROS功能包以上圖的package3為例,對其中的各個文件及文件夾進(jìn)行討論。CmakeLists.txt:定義編譯的規(guī)則Package.xml:定義功能包的屬性scripts:存放可執(zhí)行腳本include:存放頭文件src:存放源碼文件msg:存放自定義消息類型文件srv:存放自定義服務(wù)類型文件launch:存放launch文件,launch文件可幫助一次運行多個可執(zhí)行文件config:存放功能包中所需要使用的配置文件機(jī)器人操作系統(tǒng)ROS的安裝與基本操作知識儲備三ROS文件系統(tǒng)級2.ROS功能包(1).

CMakeLists.txt文件要了解CMakeLists.txt文件,首先需要先了解一下Makefile。在一個工程或者項目中,可能會有很多的源文件,按照類型、功能或者模塊放到不同的文件夾中。Makefile定義了一個工程文件的編譯規(guī)則,指定了哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進(jìn)行更復(fù)雜的功能操作。Makefile就像一個shell腳本,使得項目工程的編譯變得自動化。Makefile編譯過程機(jī)器人操作系統(tǒng)ROS的安裝與基本操作知識儲備三ROS文件系統(tǒng)級2.ROS功能包(1).

CMakeLists.txt文件但是通常Makefile文件比較復(fù)雜,寫下來需要耗費大量的時間和精力。而CMakeLists.txt文件則相對比較簡單。在CMakeLists.txt確定后,直接使用cmake命令運行,將這個命令指向CMakeLists.txt所在的目錄,cmake之后就會產(chǎn)生想要的Makefile文件,然后再直接make就可以編譯出需要的結(jié)果,這帶來了極大的便利。機(jī)器人操作系統(tǒng)ROS的安裝與基本操作知識儲備三ROS文件系統(tǒng)級2.ROS功能包(1).

CMakeLists.txt文件下表列出ROS下CMakeLists.txt的一個總體結(jié)構(gòu)。代碼含義Cmake_minimum_required()指定catkin最低版本Project()指定軟件包的名稱Find_package()引入外部依賴包Add_message_files()添加消息文件(*.msg)Add_service_files()添加服務(wù)文件(*.srv)Add_action_files()添加動作文件Generate_messages()生成消息、服務(wù)和動作Add_dependencies()確保自定義消息的頭文件在使用之前已經(jīng)被生成Add_library()添加目標(biāo)庫文件Add_executable()生成可執(zhí)行文件Target_link_libraries()指定目標(biāo)連接的庫Install()安裝目標(biāo)文件編譯代碼表機(jī)器人操作系統(tǒng)ROS的安裝與基本操作知識儲備三ROS文件系統(tǒng)級2.ROS功能包(2).package.xml文件package.xml是ROS功能包的“功能包清單描述”,定義了包的屬性,如名稱、版本、描述、作者信息、依賴等,最重要的是聲明了編譯工具、編譯依賴工具、編譯輸出依賴和運行依賴。下表列出package.xml文件的寫法。package.xml文件標(biāo)簽標(biāo)簽含義<pacakge>根標(biāo)簽<name>包名<version>版本號<description>包描述<maintainer>維護(hù)者<license>軟件許可證<buildtool_depend>編譯構(gòu)建工具,通產(chǎn)為catkin<depend>指定依賴項為編譯、導(dǎo)出、運行需要的依賴<build_depend>編譯依賴項<build_export_depend>導(dǎo)出依賴性<exec_depend>運行依賴項<test_depend>測試用例依賴項<doc_depend>文檔依賴項機(jī)器人操作系統(tǒng)ROS的安裝與基本操作知識儲備四ROS計算圖級計算圖是ROS處理數(shù)據(jù)的一種點對點的網(wǎng)絡(luò)形式。程序運行時,所有進(jìn)程以及它們所進(jìn)行的數(shù)據(jù)處理,將會通過一種點對點的網(wǎng)絡(luò)形式表現(xiàn)出來。這一級主要包括幾個重要概念:節(jié)點管理器(master)、節(jié)點(node)、消息(message)、服務(wù)(service)、主題(topic)、參數(shù)服務(wù)器(ParameterServer)和消息記錄包(Bag)。ROS計算圖級框架機(jī)器人操作系統(tǒng)ROS的安裝與基本操作知識儲備四ROS計算圖級節(jié)點(Node)在ROS系統(tǒng)中是主要的計算執(zhí)行進(jìn)程。節(jié)點管理器(master)作為一個中間節(jié)點,用于在不同ROS節(jié)點之間建立連接。節(jié)點需要使用如roscpp或rospy的ROS客戶端庫進(jìn)行編寫,之后能通過主題、服務(wù)等與其他節(jié)點進(jìn)行通信。節(jié)點與節(jié)點管理器之間的關(guān)系機(jī)器人操作系統(tǒng)ROS的安裝與基本操作知識儲備四ROS計算圖級ROS同時為用戶提供了處理節(jié)點的工具,如rosnode,它是一個用于顯示節(jié)點信息的命令行工具。常見支持命令如下:rosnodelist:列出當(dāng)前活動節(jié)點rosnodeinfo[節(jié)點名稱]:輸出當(dāng)前節(jié)點信息rosnodekill[節(jié)點名稱]:結(jié)束當(dāng)前運行節(jié)點進(jìn)程或發(fā)送給定信號rosnodemachine[PC名或IP]:列出某一特定計算機(jī)上運行的節(jié)點或列出主機(jī)名稱rosnodeping[節(jié)點名稱]:測試節(jié)點之間的連通性rosnodecleanup:將無法訪問的節(jié)點注冊信息清除機(jī)器人操作系統(tǒng)ROS的安裝與基本操作知識儲備四ROS計算圖級在Ubuntu中,每打開一個節(jié)點就需要重新打開一個終端,當(dāng)需要打開多個節(jié)點時就尤為繁瑣,而啟動文件(LaunchFile)可以通過xml文件實現(xiàn)多節(jié)點的配置和啟動,省去了啟動多個終端與多個節(jié)點的復(fù)雜操作。同時它還可以自動啟動ROSMaster節(jié)點管理器,并且可以實現(xiàn)每個節(jié)點的各種配置,為多個節(jié)點的操作提供很大便利。Launch文件寫法機(jī)器人操作系統(tǒng)ROS的安裝與基本操作知識儲備四ROS計算圖級消息(message)是實現(xiàn)節(jié)點之間的邏輯聯(lián)系和數(shù)據(jù)交換,每一個消息都是一個嚴(yán)格的數(shù)據(jù)結(jié)構(gòu),支持諸如整型、浮點型、布爾型等常見的數(shù)據(jù)類型。內(nèi)置類型機(jī)器人操作系統(tǒng)ROS的安裝與基本操作知識儲備四ROS計算圖級主題(topic)是ROS網(wǎng)絡(luò)對消息進(jìn)行路由和管理的數(shù)據(jù)總線,是一種單向異步通信機(jī)制。ROS節(jié)點之間通過話題的發(fā)布與訂閱來進(jìn)行交互,每一條消息都要發(fā)布到相應(yīng)的話題。同時話題的名稱必須是獨一無二的,否則在同名話題之間的消息路由就會發(fā)生錯誤。單向異步通信機(jī)制機(jī)器人操作系統(tǒng)ROS的安裝與基本操作知識儲備四ROS計算圖級服務(wù)(service)是另一種在節(jié)點之間傳遞數(shù)據(jù)的方法,是雙向同步通信機(jī)制。它能夠讓一個節(jié)點調(diào)用運行在另一個節(jié)點中的函數(shù)。這種機(jī)制不僅可以發(fā)送消息,還存在反饋。雙向同步通信機(jī)制機(jī)器人操作系統(tǒng)ROS的安裝與基本操作工程實踐一Ubuntu16.04LTS系統(tǒng)的安裝步驟1:制作系統(tǒng)鏡像。以安裝有Windows10操作系統(tǒng)的計算機(jī)為例,首先在Ubuntu的官方網(wǎng)站/download/desktop或者其他國內(nèi)的鏡像網(wǎng)站下載Ubuntu16.04的ISO鏡像文件,下載完成后,用UltraISO軟件將U盤制作為啟動盤。打開UltraISO軟件,點擊文件按鈕,選擇下載的鏡像文件以及制作啟動盤的U盤。選擇完畢后,點擊“啟動”選擇“寫入硬盤鏡像”,注意在制作啟動盤之前需要將U盤內(nèi)容備份然后格式化,到此U盤啟動盤制作成功。UltraISO軟件界面圖制作U盤鏡像示意圖機(jī)器人操作系統(tǒng)ROS的安裝與基本操作工程實踐一Ubuntu16.04LTS系統(tǒng)的安裝步驟2:磁盤分區(qū)。在Windows文件資源管理器上,右擊此電腦,選擇管理——磁盤管理,從一個磁盤中分出一個空磁盤用于安裝Ubuntu,具體的數(shù)值可根據(jù)實際情況設(shè)定,建議大于50G。分配磁盤空間機(jī)器人操作系統(tǒng)ROS的安裝與基本操作工程實踐一Ubuntu16.04LTS系統(tǒng)的安裝步驟3:完成Ubuntu安裝。完成磁盤空間的劃分和啟動盤制作后,重啟計算機(jī),連續(xù)點按F12(不同計算機(jī)可能不太一樣,可根據(jù)自己計算機(jī)型號自行查閱)選擇U盤作為啟動項,進(jìn)入Ubuntu安裝界面。語言選擇簡體中文,點擊安裝Ubuntu:Ubuntu系統(tǒng)安裝步驟一機(jī)器人操作系統(tǒng)ROS的安裝與基本操作工程實踐一Ubuntu16.04LTS系統(tǒng)的安裝取消安裝下載中更新以及安裝這個第三方軟件,點擊繼續(xù):Ubuntu系統(tǒng)安裝步驟二機(jī)器人操作系統(tǒng)ROS的安裝與基本操作工程實踐一Ubuntu16.04LTS系統(tǒng)的安裝由于需要自己分區(qū),選擇“其他選項”來調(diào)整分區(qū),然后進(jìn)入如下界面:Ubuntu系統(tǒng)安裝步驟三機(jī)器人操作系統(tǒng)ROS的安裝與基本操作工程實踐一Ubuntu16.04LTS系統(tǒng)的安裝下圖中空閑的磁盤就是通過壓縮卷分出來安裝Ubuntu用的,點擊下圖中“+”:Ubuntu系統(tǒng)安裝步驟四機(jī)器人操作系統(tǒng)ROS的安裝與基本操作工程實踐一Ubuntu16.04LTS系統(tǒng)的安裝從劃分的磁盤選擇啟動項安裝的位置,大小200M左右,掛載點為/boot,確定后再選擇剩余空間,點“+”號::Ubuntu系統(tǒng)安裝步驟五機(jī)器人操作系統(tǒng)ROS的安裝與基本操作工程實踐一Ubuntu16.04LTS系統(tǒng)的安裝選擇交換空間,大小設(shè)置為系統(tǒng)內(nèi)存大小,這里設(shè)置為3000M,點擊確定,對剩余空閑磁盤空間,點“+”號:Ubuntu系統(tǒng)安裝步驟六機(jī)器人操作系統(tǒng)ROS的安裝與基本操作工程實踐一Ubuntu16.04LTS系統(tǒng)的安裝將剩余內(nèi)存全部分配,選擇Ubuntu的掛載點為/,點擊確定:Ubuntu系統(tǒng)安裝步驟七機(jī)器人操作系統(tǒng)ROS的安裝與基本操作工程實踐一Ubuntu16.04LTS系統(tǒng)的安裝選擇系統(tǒng)安裝引導(dǎo)項的設(shè)備,一定要選擇剛剛建立掛載點為/boot的磁盤(這里為/dev/sda1)。Ubuntu系統(tǒng)安裝步驟八點擊“現(xiàn)在安裝”選項,后面按照指示進(jìn)行即可安裝完成。機(jī)器人操作系統(tǒng)ROS的安裝與基本操作工程實踐二ROSKinetic的安裝實驗步驟1:配置軟件倉庫。首先在開始安裝ROS之前,第一步需要配置Ubuntu軟件倉庫,為此需要將Ubuntu系統(tǒng)設(shè)置中的軟件與更新設(shè)置為如下狀態(tài),以允許使用“restricted”“universe”和“multiverse”存儲庫。如果下載速度緩慢,可以將軟件源選擇為國內(nèi)的阿里云鏡像,可以提高下載速度。Ubuntu軟件與更新界面機(jī)器人操作系統(tǒng)ROS的安裝與基本操作工程實踐二ROSKinetic的安裝實驗步驟2:設(shè)置軟件源。一旦添加了正確的軟件源,Ubuntu就知道去哪里下載程序,并根據(jù)命令自動安裝軟件,設(shè)置軟件源的命令如下,按“Ctrl+Alt+T”打開終端,輸入以下指令:$sudosh-c'echo"deb/ros/ubuntu$(lsb_release-sc)main">/etc/apt/sources.list.d/ros-latest.list’實驗步驟3:設(shè)置密鑰。密鑰是Ubuntu系統(tǒng)的一種安全機(jī)制,也是ROS安裝中不可缺的一部分,通常情況下,當(dāng)添加完軟件庫時,就已經(jīng)添加了軟件庫的密鑰。具體執(zhí)行命令如下:$sudoapt-keyadv--keyserver'hkp://:80'--recv-keyC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654機(jī)器人操作系統(tǒng)ROS的安裝與基本操作工程實踐二ROSKinetic的安裝實驗步驟4:安裝ROS。在安裝ROS之前最好先升級一下軟件,避免錯誤的庫版本或軟件版本產(chǎn)生各種問題,運行命令:$sudoapt-getupdate在ROS中,有很多不同的庫和工具,官網(wǎng)提供了四種默認(rèn)的配置。具體安裝代碼如下:桌面完整版安裝(推薦):包含ROS、rqt、rviz、機(jī)器人通用庫、2D/3D模擬器、導(dǎo)航以及2D/3D感知。$sudoapt-getinstallros-kinetic-desktop-full桌面版安裝:包含ROS、rqt、rviz以及通用機(jī)器人函數(shù)庫。$sudoapt-getinstallros-kinetic-desktop基礎(chǔ)版安裝:包含ROS核心軟件包、構(gòu)建工具以及通信相關(guān)的程序庫,無GUI工具。$sudoapt-getinstallros-kinetic-ros-base單個軟件包安裝:也可以安裝某個指定的ROS軟件包(使用軟件包名稱替換掉下面的PACKAGE)。$sudoapt-getinstallros-kinetic-ros-base機(jī)器人操作系統(tǒng)ROS的安裝與基本操作工程實踐二ROSKinetic的安裝實驗步驟5:初始化rosdep。在開始使用ROS之前還需要初始化rosdep。rosdep可以方便在需要編譯某些源碼的時候為其安裝一些系統(tǒng)依賴,同時也是某些ROS核心功能組件所必需用到的工具。初始化rosdep命令為:$sudorosdepinit$rosdepupdate由于是國外網(wǎng)站無法訪問,程序無法下載相應(yīng)的文件,可能會導(dǎo)致運行上面兩行代碼可能會不成功。所以要確保能夠被正常訪問,當(dāng)出現(xiàn)以下界面時,才可以被認(rèn)為是成功。rosdep成功界面截圖機(jī)器人操作系統(tǒng)ROS的安裝與基本操作工程實踐二ROSKinetic的安裝實驗步驟6:配置環(huán)境。為了能夠運行ROS,系統(tǒng)需要知道可執(zhí)行文件以及其他命令的位置。為了實現(xiàn)以上目的,需要添加ROS環(huán)境變量,這樣每打開一個終端時,會自動添加環(huán)境變量,具體命令為:$echo"source/opt/ros/kinetic/setup.bash">>~/.bashrc$source~/.bashrc實驗步驟7:構(gòu)建依賴。到目前為止,已經(jīng)安裝了運行核心ROS包所需的內(nèi)容。為了創(chuàng)建和管理ROS工作區(qū),有各種各樣的工具可以使用。例如:rosinstall是一個經(jīng)常使用的命令行工具,它能夠輕松地從一個命令中下載許多ROS包的源碼。在Ubuntu中運行以下命令安裝這個工具:$sudoapt-getinstallpython-rosinstallpython-rosinstall-generatorpython-wstoolbuild-essential機(jī)器人操作系統(tǒng)ROS的安裝與基本操作工程實踐二ROSKinetic的安裝實驗步驟8:ROS系統(tǒng)測試。當(dāng)完成ROS的安裝后,可以通過測試roscore和turtlesim來測試安裝是否成功。具體做法是打開兩個終端,快捷鍵為“Ctrl+Alt+T”,在兩個終端中分別輸入以下命令:$roscore$rosrunturtlesimturtlesim_node如果一切正常就會看到以下界面(海龜?shù)男螤羁赡懿煌耆嗤篟OSKinetic安裝測試圖機(jī)器人操作系統(tǒng)ROS的安裝與基本操作工程實踐三創(chuàng)建工作空間對于ROSGroovy以后的版本可以參考以下步驟創(chuàng)建工作空間。步驟1:初始化工作空間。打開一個終端,運行以下命令:$mkdir-p~/catkin_ws/src$cd~/catkin_ws/src$catkin_init_workspace步驟2:編譯工作空間。工作空間初始化完成后,可以在src文件夾下看到一個CMakeLists.txt的文件,即使這個工作空間是空的,依然可以直接編譯。打開一個新的終端,運行以下命令:$cd~/catkin_ws/$catkin_make機(jī)器人操作系統(tǒng)ROS的安裝與基本操作工程實踐三創(chuàng)建工作空間步驟3:設(shè)置環(huán)境變量。編譯完成后,在該工作空間下可以看到有build和devel兩個文件夾,devel文件夾中有許多個setup.*sh文件,啟動這些文件會覆蓋現(xiàn)在的環(huán)境變量。在終端中執(zhí)行以下命令設(shè)置環(huán)境變量:$echo"source~/catkin_ws/devel/setup.bash">>~/.bashrc$source~/.bashrc為了確認(rèn)環(huán)境變量是否設(shè)置成功,可以運行以下命令來確認(rèn)當(dāng)前的目錄是否在環(huán)境變量中:$echo$ROS_PACKAGE_PATH如果輸出:/home/username/catkin_ws/src:/opt/ros/kinetic/share:/opt/ros/kinetic/stacks,則說明工作環(huán)境已經(jīng)建立。機(jī)器人操作系統(tǒng)ROS的安裝與基本操作工程實踐四創(chuàng)建ROS功能包工作空間創(chuàng)建完成后,可以在工作空間下創(chuàng)建功能包。具體操作步驟如下:步驟1:新建功能包。使用以下命令在剛剛建立的工作空間中創(chuàng)建新的功能包:$cd~/catkin_ws/src$catkin_create_pkgexample1std_msgsroscpp其中example1為功能包的名稱,std_msgs為包含常見消息類型和其他基本消息構(gòu)造依賴,roscpp是用c++來實現(xiàn)ROS的各種功能。如果所有步驟執(zhí)行正確,將會得到如下所示的結(jié)果:創(chuàng)建功能包結(jié)果圖機(jī)器人操作系統(tǒng)ROS的安裝與基本操作工程實踐四創(chuàng)建ROS功能包步驟2:編譯功能包。一旦創(chuàng)建了功能包,就可以在功能包下編寫代碼來實現(xiàn)各種功能。命令行如下:$cd~/catkin_ws$catkin_make如果編譯沒有錯誤,將會看到如下的畫面:創(chuàng)建功能包結(jié)果圖需要注意的是,編譯功能包時必須是在工作空間文件夾下運行catkin_make命令,如果在其他文件夾下這樣做,可能會生成錯誤的文件。機(jī)器人操作系統(tǒng)ROS的安裝與基本操作工程實踐五使用ROS節(jié)點步驟1:安裝turtlesim功能包。如果已經(jīng)安裝完整版的ROS系統(tǒng),那么已經(jīng)有了turtlesim功能包,如果沒有安裝成功,可以用以下的命令行來進(jìn)行安裝:$sudoapt-getinstallros-kinetic-turtlesim步驟2:運行節(jié)點管理器。安裝好turtlesim相關(guān)功能包,在開始使用節(jié)點之前,必須先運行節(jié)點管理器。命令行如下:$roscore機(jī)器人操作系統(tǒng)ROS的安裝與基本操作工程實踐五使用ROS節(jié)點步驟3:啟動節(jié)點。運行主節(jié)點后,現(xiàn)在需要用rosrun命令啟動一個新的節(jié)點,打開一個新的終端,運行以下命令:$rosrunturtlesimturtlesim_node會看到一個新的窗口,在這個窗口中有一個小海龜,如下圖所示:tuetlesim_node運行結(jié)果示意機(jī)器人操作系統(tǒng)ROS的安裝與基本操作工程實踐五使用ROS節(jié)點步驟4:查看節(jié)點信息。通過rosnode工具來查看節(jié)點列表,會看到出現(xiàn)了一個新的節(jié)點,叫/turtlesim。此時可以通過rosnodeinfoNode來查看節(jié)點的具體信息,打開一個新的終端,運行以下命令:$rosnodeinfo/turtlesim此時將輸出以下信息:tuetlesim_node節(jié)點信息在上面的信息中,可以清楚的看到節(jié)點發(fā)布(Publications)、訂閱(Subscriptions)和服務(wù)(Services)的相關(guān)主題以及它們各自的名稱。機(jī)器人操作系統(tǒng)ROS的安裝與基本操作工程實踐六使用Launch啟動文件步驟1:創(chuàng)建launch啟動文件。在example1功能包下按照下面命令新建launch文件夾,創(chuàng)建example1.launch。$cd~/catkin_ws/src/example1$mkdirlaunch$cdlaunch$geditexample1.launch在文件中輸入下面的代碼:<?xmlversion="1.0"?><launch> <nodename="turtlesim_node"pkg="turtlesim"type="turtlesim_node"/> <nodename="turtle_teleop_key"pkg="turtlesim"type="turtle_teleop_key"output="screen"/></launch>機(jī)器人操作系統(tǒng)ROS的安裝與基本操作工程實踐六使用Launch啟動文件可以看到,這個例子包含了啟動海龜節(jié)點和用鍵盤控制海龜節(jié)點。launch文件通過XML文件實現(xiàn)了多節(jié)點的配置和啟動。其中,在啟動文件中node參數(shù)需要三個屬性:name:定義節(jié)點運行的名稱pkg:定義節(jié)點所在的功能包名稱type:定義節(jié)點的可執(zhí)行文件名稱pkg和type屬性等同于在終端中使用rosrun命令執(zhí)行節(jié)點時的輸入?yún)?shù)。機(jī)器人操作系統(tǒng)ROS的安裝與基本操作工程實踐六使用Launch啟動文件步驟2:啟動launch節(jié)點。例如從example1中啟動talker節(jié)點,執(zhí)行以下命令:$roslaunchexample1example1.launch將會看到如下的結(jié)果:啟動launch文件截圖此時,可以按下鍵盤的箭頭鍵控制海龜?shù)囊苿樱缟嫌覉D所示。海龜移動機(jī)器人操作系統(tǒng)ROS的安裝與基本操作作業(yè)一、完成Ubuntu系統(tǒng)的安裝,思考為什么ROS一般安裝在Ubuntu系統(tǒng)?二、熟悉ROS1.0的基本操作,查閱資料ROS2.0相較于ROS1.0主要在哪些方面進(jìn)行了升級?三、完成ROS節(jié)點的創(chuàng)建和使用,嘗試創(chuàng)建并使用ROS的消息和服務(wù)文件。四、熟悉ROS的文件系統(tǒng)級和計算圖級,同時查閱資料了解ROS的開源社區(qū)級。項目六:移動機(jī)器人高階認(rèn)知與實踐任務(wù)二:基于ROS的機(jī)器人安裝任務(wù)目標(biāo):1.了解基于ROS系統(tǒng)的機(jī)器人平臺2.了解LEO機(jī)器人的硬件組成3.能完成LEO機(jī)器人系統(tǒng)和軟件安裝4.能完成LEO機(jī)器人功能包的安裝知識儲備一基于ROS系統(tǒng)的機(jī)器人平臺簡介目前,ROS已經(jīng)成為世界各地大多數(shù)機(jī)器人都向往參與的平臺,基于ROS系統(tǒng)開發(fā)的機(jī)器人平臺也已經(jīng)有很多。其中比較常見的有WillowGarage公司開發(fā)的TurtleBot系列機(jī)器人,松靈機(jī)器人公司開發(fā)的LIMO機(jī)器人,璞數(shù)公司開發(fā)的ROSYZ系列機(jī)器人,深圳玩智商科技有限公司(EAI)開發(fā)的LEO機(jī)器人等。Turtlebot系列機(jī)器人LIMO機(jī)器人璞數(shù)系列機(jī)器人LEO機(jī)器人知識儲備二LEO機(jī)器人硬件組成LEO機(jī)器人,在硬件方面主要由STM32模塊、導(dǎo)航模塊(N92工控機(jī))、超聲波模塊、激光雷達(dá)、三相直流無刷電機(jī)組成和DOBOTmagician機(jī)械臂。知識儲備二LEO機(jī)器人硬件組成1.STM32模塊STM32模塊是意法半導(dǎo)體推出的32位ARMCortex-M4內(nèi)核微控制器系列,具有高性能、低功耗、可靠性強等特點,廣泛應(yīng)用于工業(yè)控制、智能家居、工業(yè)自動化、智能小車等領(lǐng)域。其主芯片為STM32F407ZGT6,它基于高性能Arm?Cortex?-M432位RISC內(nèi)核,工作頻率高達(dá)168MHz。Cortex-M4內(nèi)核具有浮點單元(FPU)單精度,支持所有Arm單精度數(shù)據(jù)處理指令和數(shù)據(jù)類型。它還實現(xiàn)了一整套DSP指令和一個增強應(yīng)用程序安全性的內(nèi)存保護(hù)單元(MPU)。在LEO設(shè)備中主要作用是采集超聲波,左右輪電機(jī)編碼器等傳感器數(shù)據(jù),并且控制電機(jī)的轉(zhuǎn)動。。知識儲備二LEO機(jī)器人硬件組成2.導(dǎo)航模塊(N92工控機(jī))導(dǎo)航模塊(N92工控機(jī))是LEO機(jī)器人導(dǎo)航的控制模塊。其主處理器是I5-4210Y/1.5GHz雙核處理器,Graphics4200核心顯卡,2個USB2.0接口,2個USB3.0接口,1個HDMI接口,1個VGA接口,可提供12V電源。在LEO機(jī)器人中主要通過串口與STM32模塊通訊,獲取超聲波,編碼器等數(shù)據(jù),并轉(zhuǎn)換成相應(yīng)ROS的消息。其可以運行建圖導(dǎo)航算法,根據(jù)傳感器數(shù)據(jù),使用gmappingslam算法構(gòu)建地圖,用dijk等算法規(guī)劃全局路徑,teb_local_planner等算法規(guī)劃局部路徑,最后根據(jù)規(guī)劃出的路徑,控制LEO機(jī)器人移動。知識儲備二LEO機(jī)器人硬件組成3.超聲波模塊US-015超聲波模塊是目前市場上分辨率最高,重復(fù)測量一致性最好的超聲波測距模塊,它的測量角度為15度(圓錐形),測量距離范圍為2cm-400cm,測量精度為0.1cm+1%,供電電壓為5V,工作電流為2.2mA,支持GPIO通信模式,工作穩(wěn)定可靠。在LEO機(jī)器人中主要用于檢測玻璃等透明障礙物,并臨時把障礙物加入地圖中,使工控機(jī)重新規(guī)劃路徑,來躲避這些障礙物。知識儲備二LEO機(jī)器人硬件組成4.激光雷達(dá)G1G1雷達(dá)是深圳玩智商科技有限公司(EAI)研發(fā)的一款360度二維測距產(chǎn)品。本產(chǎn)品基于三角測距原理,并配以相關(guān)光學(xué)、電學(xué)、算法設(shè)計,實現(xiàn)高頻高精度的距離測量,在測距的同時,機(jī)械結(jié)構(gòu)360度旋轉(zhuǎn),不斷獲取角度信息,從而實現(xiàn)了360度掃描測距,輸出掃描環(huán)境的點云數(shù)據(jù)。動力方面采用工業(yè)級無刷電機(jī)驅(qū)動,性能穩(wěn)定。其特點為高速測距,測距頻率可達(dá)9000Hz,抗環(huán)境光干擾能力強,讓機(jī)器人能更快速、精確的建圖。知識儲備二LEO機(jī)器人硬件組成5.三相直流無刷電機(jī)無刷直流電機(jī)由電動機(jī)主體和驅(qū)動器組成,是一種典型的機(jī)電一體化產(chǎn)品。該電機(jī)減速比15,額定功率25W,額定電壓24V,額定轉(zhuǎn)速2500rpm,額定轉(zhuǎn)矩0.096N.m,瞬時最大轉(zhuǎn)矩0.144N.m,速度控制范圍200~2500rpm,內(nèi)置霍爾傳感器(約600線/圈),即輪子轉(zhuǎn)動一圈時,輸出600個碼盤數(shù)。目前已廣泛應(yīng)用到多種機(jī)器人關(guān)節(jié)中,在LEO機(jī)器人中主要作用是移動機(jī)器人,并返回左右輪電機(jī)的編碼器值,用于計算機(jī)器人行走的距離。。知識儲備二LEO機(jī)器人硬件組成6.DOBOTmagician越疆機(jī)械臂DOBOTmagician機(jī)械臂,其產(chǎn)品體積精巧,擁有一體化的設(shè)計,PC端控制、APP控制、手勢控制、無線控制等多種操作方式隨意切換,基于MagicianLite豐富的軟硬件交互方式及多樣化兼容拓展接口,具備3D打印、激光雕刻、寫字畫畫等多種功能,預(yù)留13個拓展接口,支持二次開發(fā)。在LEO機(jī)器人中主要作用是抓取和放置物體。工程實踐一安裝LEO機(jī)器人裝配步驟:1.將機(jī)械臂放置到LEO底盤上,機(jī)械臂底座側(cè)邊的卡扣朝后方,電源按鈕朝前方;2.將氣泵支架掛載在機(jī)械臂底座側(cè)邊的卡扣上,氣泵安裝在氣泵支架上;3.機(jī)械臂末端吸盤攝像頭模組裝到機(jī)械臂上;4.氣泵與機(jī)械臂的接線接在上面一排的紅綠口;5.氣泵管與機(jī)械臂末端的吸盤抽氣口連接;6.機(jī)械臂的數(shù)據(jù)線接在左側(cè)下方最下面的USB口;7.攝像頭的數(shù)據(jù)線接在左側(cè)下方最上面的USB口;8.攝像頭線micro口插在機(jī)械臂末端的攝像頭上;9.機(jī)械臂電源線接在LEO的12V供電口。10.安裝完成后,要檢查氣泵管和攝像頭線是否安裝合理。手動轉(zhuǎn)動機(jī)械臂旋轉(zhuǎn)一周,確保機(jī)械臂不會被氣泵管和攝像頭線卡住。項目六:移動機(jī)器人高階認(rèn)知與實踐任務(wù)三:基于ROS的機(jī)器人測試任務(wù)目標(biāo):1.掌握ROS的多機(jī)通信配置方法。2.掌握LEO機(jī)器人的硬件測試方法。3.能完成LEO機(jī)器人的各部分硬件測試。4.通過硬件測試,培養(yǎng)團(tuán)隊合作意識。知識儲備ROS網(wǎng)絡(luò)通信是中心式結(jié)構(gòu),參與ROS網(wǎng)絡(luò)通信的所有主機(jī)必須指定一臺主機(jī)作為master(主節(jié)點),負(fù)責(zé)整個ROS網(wǎng)絡(luò)通信的管理工作,參與ROS網(wǎng)絡(luò)通信的所有主機(jī)需向外聲明自己的host身份。每臺主機(jī)均要設(shè)置master和host兩個環(huán)境變量,master和host的取值均為局域網(wǎng)內(nèi)主機(jī)的真實IP地址。多機(jī)通信配置好后則可在主機(jī)上控制LEO機(jī)器人完成實驗操作。工程實踐一配置多機(jī)通信1.同步時間將主機(jī)(PC)和從機(jī)(機(jī)器人)的時間同步,若時間不同步,容易出現(xiàn)TF變換錯誤。分別在主機(jī)和從機(jī)上運行如下命令。$sudoapt-getinstallchronyntpdate$sudontpdate2.獲取主機(jī)和從機(jī)的主機(jī)名$hostname3.獲取主機(jī)和從機(jī)的IP地址$ifconfig4.安裝ssh在主機(jī)和從機(jī)上安裝ssh。$sudoapt-getinstallopenssh-server工程實踐一配置多機(jī)通信5.修改主機(jī)和從機(jī)的/etc/hosts文件假設(shè)主機(jī)的IP地址為:00,從機(jī)的IP為:00。(1)主機(jī)配置如下;PC:$vim/etc/hosts在文件末尾,添加從站的ip和從機(jī)名;PC:00DashgoE1添加完成后,輸入:wq(保存退出)。(2)從機(jī)配置如下:電腦PC連接好底盤wifi,然后遠(yuǎn)程登錄到從機(jī),并配置從機(jī)的/etc/hosts文件,在該文件中添加電腦的ip地址和主機(jī)名;在電腦PC端遠(yuǎn)程登錄到LEO機(jī)器人端,并修改文件;PC:$ssheaibot@00LEO:$sudovim/etc/hosts在文件末尾,添加主站的ip和從機(jī)名;LEO:00(電腦PC端名稱)添加完成后,輸入:wq(保存退出)。工程實踐一配置多機(jī)通信6.LEO機(jī)器人通信測試在主機(jī)和從機(jī)間建立連接,確保主機(jī)和從機(jī)在同一局域網(wǎng)下,在主機(jī)中打開一個窗口,運行以下命令,運行格式為:ssh從機(jī)名@IP_從機(jī)PC:$ssheaibot@00輸入從機(jī)密碼,密碼為eaibot。連接成功后會出現(xiàn)下圖所示結(jié)果,終端的名稱變?yōu)閺臋C(jī)名:工程實踐二機(jī)器人測試1.激光雷達(dá)測試具體步驟:(1)電腦連接LEO的WiFi(2)如果是windows電腦,運行xshell7軟件,如果是ubuntu電腦,右鍵桌面→打開終端(3)在上述打開的命令行窗口,輸入以下指令:CP:$ssheaibot@00LEO:$roslaunchsmart_nodedriver_imu.launch(4)再打開一個終端,在命令行窗口輸入以下指令:CP:$ssheaibot@00LEO:$rostopicecho/scan如果有數(shù)據(jù)打印,即為正常。工程實踐二機(jī)器人測試2.陀螺儀測試具體步驟:(1)電腦連接LEO的WiFi(2)如果是windows電腦,運行xshell7軟件,如果是ubuntu電腦,右鍵桌面→打開終端(3)在上述打開的命令行窗口,輸入以下指令:CP:$ssheaibot@00LEO:$roslaunchsmart_nodedriver_imu.launch(4)再打開一個終端,在命令行窗口輸入以下指令:CP:$ssheaibot@00LEO:$rostopicecho/imu_angle(5)另外再開一個窗口,在命令行窗口輸入以下指令:CP:$ssheaibot@00LEO:$rosrundashgo_toolsteleop_twist_keyboard.py此時啟動了鍵盤,“I”按鍵表示前進(jìn),“J”按鍵表示左轉(zhuǎn),“L”按鍵表示右轉(zhuǎn),“,”按鍵表示后退。此時按上述按鍵控制機(jī)器轉(zhuǎn)動,觀察上面的/imu_angle數(shù)據(jù)是否變化。有變化,且和實際轉(zhuǎn)動的角度符合,則陀螺儀正常工程實踐二機(jī)器人測試3.超聲波測試超聲波參數(shù)文件路徑:dashgo_ws/src/dashgo/smart_node/config/smart_parms_imu.yaml超聲波測試主要是觀察/sonar0和/sonar1話題,具體步驟:(1)電腦連接LEO的WiFi(2)如果是windows電腦,運行xshell7軟件,如果是ubuntu電腦,右鍵桌面→打開終端(3)在上述打開的命令行窗口,輸入以下指令:CP:$ssheaibot@00LEO:$roslaunchsmart_nodedriver_imu.launch(4)再打開一個終端,在命令行窗口輸入以下指令:CP:$ssheaibot@00LEO:$rostopicecho/sonar0或

rostopicecho/sonar1在機(jī)器人的前方兩個超聲波處用擋板等物體由近到遠(yuǎn)移動,觀察上述超聲波數(shù)據(jù),有變化,且測量距離和實際基本符合即為正常。工程實踐二機(jī)器人測試4.攝像頭測試測試攝像頭首先觀察攝像頭在LEO機(jī)器人上面的攝像頭話題/usb_cam/image_raw是否有數(shù)據(jù),具體步驟如下:(1)電腦連接LEO的WiFi(2)如果是windows電腦,運行xshell7軟件,如果是ubuntu電腦,右鍵桌面→打開終端(3)在上述打開的命令行窗口,輸入以下指令:CP:$ssheaibot@00LEO:$roslaunchprobot_visionusb_cam_in_hand.launch(4)再打開一個終端,在命令行窗口輸入以下指令:CP:$ssheaibot@00LEO:$rostopicecho/usb_cam/image_raw有數(shù)據(jù)打印,證明攝像頭有數(shù)據(jù)。然后看攝像頭的成像是否正常,講攝像頭的usb插頭插在自己的筆記本電腦(Windows)上,打開系統(tǒng)自帶的相機(jī),切換相機(jī),就可看到攝像頭的成像,無明顯異常(拖影、斷層、白斑等)即為正常。工程實踐二機(jī)器人測試5.LEO機(jī)器人底盤測試(1)直線測試通過命令行測試底盤按照直線行走1米。具體步驟如下:①遠(yuǎn)程進(jìn)入LEO機(jī)器人,啟動底盤驅(qū)動。PC:$ssheaibot@00LEO:$roslaunchsmart_nodedriver_imu.launch②遠(yuǎn)程進(jìn)入LEO機(jī)器人,打開新的終端,啟動移動腳本。CP:$ssheaibot@00LEO:$rosrundashgo_toolscheck_linear_imu.py③測試完后,ctl+c結(jié)束兩個終端的程序。(2)旋轉(zhuǎn)測試通過命令行測試底盤旋轉(zhuǎn)360度,具體步驟如下:①遠(yuǎn)程進(jìn)入LEO機(jī)器人,啟動底盤驅(qū)動。CP:$ssheaibot@00LEO:$roslaunchsmart_nodedriver_imu.launch②遠(yuǎn)程進(jìn)入LEO機(jī)器人另一個終端,啟動移動腳本。CP:$ssheaibot@00LEO:$rosrundashgo_toolscheck_angular_imu.py③測試完后,ctl+c結(jié)束兩個終端的程序。工程實踐二機(jī)器人測試6.機(jī)械臂測試通常我們只需要測試機(jī)械臂是否能夠正常歸零即可。具體步驟:(1)電腦連接LEO的WiFi(2)如果是windows電腦,運行xshell7軟件,如果是ubuntu電腦,右鍵桌面→打開終端(3)在上述打開的命令行窗口,輸入以下指令:CP:$ssheaibot@00LEO:$roslaunchdobotDobotServer.launch(4)再打開一個終端,在命令行窗口輸入以下指令:CP:$ssheaibot@00LEO:$rosservicecall/DobotServer/SetHOMECmd"{}"項目六:移動機(jī)器人高階認(rèn)知與實踐基于Turbot3機(jī)器人的實踐任務(wù)四:基于ROS的機(jī)器人SLAM算法和導(dǎo)航任務(wù)目標(biāo):1.了解SLAM的基本定義、分類。2.了解并實踐基于激光雷達(dá)的Gmapping算法。3.了解并實踐基于視覺的cartographer算法。4.熟悉并實踐機(jī)器人導(dǎo)航算法。知識儲備一SLAM的基本定義SLAM(SimultaneousLocalizationandMapping,同時定位與地圖構(gòu)建)問題可以簡單描述為:將一個移動設(shè)備(如機(jī)器人、無人機(jī)、手機(jī)、汽車、智能穿戴設(shè)備等)從一個未知環(huán)境中的未知位置出發(fā),在運動過程中通過傳感器(如激光雷達(dá)、相機(jī)等)觀測定位自身位置和姿態(tài),讓移動設(shè)備一邊移動一邊以增量的形式描繪出此環(huán)境地圖,從而達(dá)到同時定位和地圖構(gòu)建的目的。知識儲備一SLAM的基本定義SLAM最早被應(yīng)用在機(jī)器人領(lǐng)域,其目的是在沒有任何先驗知識的情況下,根據(jù)傳感器數(shù)據(jù)能夠自主構(gòu)建周圍環(huán)境地圖,同時根據(jù)這個地圖推測自身的位置。一般來說,機(jī)器人自主移動到指定位置的過程可以分解為定位、建圖和路徑規(guī)劃三個任務(wù),而SLAM主要解決定位與建圖問題。知識儲備一SLAM的基本定義定位是用于估計機(jī)器人相對于地圖的位姿(位置與姿態(tài)),建圖是指機(jī)器人創(chuàng)建環(huán)境空間模型的過程。地圖一方面可以幫助機(jī)器人配合自身的傳感器進(jìn)行實時定位,同時也用于后續(xù)展開行動時,導(dǎo)航過程的路徑規(guī)劃。自主運動的兩大基本問題我在什么地方?——定位周圍環(huán)境是什么樣子?——建圖定位與建圖=內(nèi)外兼修定位側(cè)重對自身的了解,建圖側(cè)重對外在的了解相互關(guān)聯(lián)準(zhǔn)確的定位需要精確的地圖精確的地圖來自準(zhǔn)確的定位知識儲備二SLAM的分類SLAM主要可分為基于激光的SLAM和基于視覺的SLAM。基于激光的SLAM方法是成熟且可信的方法,能提供機(jī)器人本體與周圍環(huán)境障礙物間的距離信息,能以較高精度檢測出機(jī)器人周圍障礙點的角度和距離,進(jìn)而實現(xiàn)SLAM、避障等功能。但激光雷達(dá)存在著價格昂貴、獲取信息量有限(稀疏點云、無彩色信息)等缺點。視覺SLAM是以相機(jī)為主要傳感器的SLAM系統(tǒng),相比于激光雷達(dá),同樣的檢測相機(jī)成本低,且采集的圖像信息比激光雷達(dá)得到的信息豐富,有利于后期的處理,但存在著計算量大、對環(huán)境假設(shè)強和易受干擾等缺點。知識儲備三

經(jīng)典開源SLAM算法1.基于激光雷達(dá)的Gmapping算法Gmapping是一個基于2D激光雷達(dá)使用RBPF(Rao-BlackwellizedParticleFilters)算法完成二維柵格地圖構(gòu)建的SLAM算法。其優(yōu)點是Gmapping可以實時構(gòu)建室內(nèi)環(huán)境地圖,在較小場景中計算量少,且地圖精度較高,同時對激光雷達(dá)掃描頻率要求較低。但隨著環(huán)境增大,構(gòu)建地圖所需的內(nèi)存和計算量就會變得巨大,因此Gmapping不適合大場景構(gòu)圖。2.基于cartographerslam算法Cartographer是Google推出的一套基于圖優(yōu)化的激光SLAM算法,它同時支持2D和3D激光SLAM,可以跨平臺使用,支持Lidar、IMU、Odemetry、GPS、Landmark等多種傳感器配置。是目前落地應(yīng)用最廣泛的激光SLAM算法之一。cartographer采用基于google開發(fā)的ceres非線性優(yōu)化的方法,基于submap子圖構(gòu)建全局地圖的思想,能有效的避免建圖過程中環(huán)境中移動物體的干擾。并能天然的輸出協(xié)方差矩陣,后端優(yōu)化的輸入項。工程實踐一基于激光雷達(dá)的Gmapping算法構(gòu)建地圖1.下載rosgmapping包,并把算法包放置到工程包里。放置目錄為:~/home/leo/src/mapping。該步驟是在LEO機(jī)器人進(jìn)行。LEO:$cd~/dashgo_wsLEO:$chmod777leo-RLEO:$catkin_makeLEO:$sourcedevel/setup.bash2.PC端遠(yuǎn)程進(jìn)入LEO機(jī)器人,并在LEO機(jī)器人中啟動建圖launch文件。CP:$ssheaibot@00LEO:$roslaunchdashgo_navgmapping_imu.launch3.在電腦PC端啟動rviz(可視化),觀察建圖過程。PC:$exportROS_MASTER_URI=00:11311PC:$roslaunchdashgo_rvizview_navigation.launch工程實踐一基于激光雷達(dá)的Gmapping算法構(gòu)建地圖4.啟動鍵盤操作CP:$ssheaibot@00LEO:$cd~/leo_wsLEO:$sourcedevel/setup.bashLEO:$rosrundashgo_toolsteleop_twist_keyboard.py5.地圖保存建好圖后,使用如下命令保存地圖到規(guī)定的maps文件夾中。PC:$ssheaibot@00LEO:cd~/da

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論