版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第8章
ROS簡介與基礎Contents01.引言02.初識ROS04.服務通信與開發03.ROS基礎與通信01引言AI引領新革命:AI技術的注入,為機器人行業帶來前所未有的發展機遇,機器人與AI攜手,將如互聯網般再次革新我們的生活,引領全新科技革命。機器人時代來臨:自20世紀70年代起,計算機、傳感器與電子技術飛躍,機器人技術步入黃金期,從工業邁向家庭、醫療、教育、救援、軍事,領域廣泛。機器人技術革新ROS操作系統介紹工具與庫函數:ROS提供豐富工具和庫函數,支持代碼獲取、編譯、編寫及跨機運行,旨在促進機器人軟件的開發與復用。ROS定義:開源元操作系統,專為機器人設計,集成硬件抽象、底層控制、函數實現、消息傳遞及包管理,提供全面基礎服務。節點框架:ROS采用分布式節點框架,節點封裝于程序包中,支持分享與發布。此設計促進工程協作與獨立開發,同時ROS工具可整合所有工程。聯合系統:類似于代碼儲存庫的聯合系統,支持工程的協作及發布。這個設計可以使一個工程的開發和實現從文件系統到用戶接口完全獨立決策。ROS軟件架構詳解02初識ROSROS歷史與特點ROS起源與發展:自2000年斯坦福大學STAIR項目起,ROS歷經多年發展,成為機器人研究開源協作框架,推動機器人技術跨領域革新。分布式網絡架構:采用TCP/IP通信,實現模塊間松耦合連接,支持話題異步流、服務同步流等多種通信,便于多機器人協同工作。多語言支持:設計為語言弱相關框架,使用簡潔定義語言跨語言交互,支持Python、C++、Java等多語言編程,促進代碼復用與模塊化設計。精簡集成與復用:模塊化設計提升軟件復用性,統一消息接口簡化移植。集成OpenCV、PCL等開源庫,加速機器人應用開發與功能創新。組件化工具包:集成3D可視化rviz、消息查看工具及物理仿真環境等組件,為機器人開發者提供一站式開發平臺,提升開發效率與仿真測試能力。免費并且開源:BSD許可賦能,自由修改發布,促進代碼共享與商業化應用。全球開發者維護,代碼庫持續增長,加速機器人生態繁榮與技術創新。ROS主要支持Ubuntu,也適用于OSX、Android等。本書選ROSMelodicMorenia,Ubuntu16.04LTS為長期支持版,穩定可靠。系統要求與選擇為確保軟件源最新,需啟用restricted、universe、multiverse倉庫。可通過Ubuntu軟件中心檢查并調整設置。配置Ubuntu軟件倉庫需將ROS官方或國內鏡像源地址加入sources.list.d/ros-latest.list,便于后續安裝時正確下載ROS相關軟件。添加sources.listROS安裝與配置通過curl命令下載ROS簽名密鑰并安裝,確保軟件包的完整性和來源可靠性,為后續安裝操作提供安全基礎。設置密鑰為終端會話啟用ROS軟件包,需將setup.bash(或setup.zsh)命令的輸出追加至對應shell的配置文件中。環境變量配置通過apt-get更新包索引后,可選擇安裝ROS桌面完整版、桌面版、基礎版或單個軟件包,以滿足不同開發需求。安裝軟件包ROS安裝與配置安裝rosinstall、wstool和build-essential等工具,以便于管理和構建自己的ROS工作區,支持多包下載與編譯。執行rosdep初始化與更新操作,確保在編譯源碼時自動安裝系統依賴,同時滿足ROS核心功能組件的運行需求。初始化rosdep配置開發依賴ROS安裝與配置架構簡介ROS架構分三層,OS層依托Linux(含Ubuntu、macOS等),中間層主打TCPROS/UDPROS通信與Nodelet進程內通信優化,應用層通過Master管理節點。計算圖通過節點、話題、服務及節點管理器構建端對端拓撲結構,實現分布式計算模塊的高效連接與協同工作,特別適用于復雜動態的機器人系統開發。開源社區依托發行版管理軟件源、Wiki記錄文檔、郵件列表促進交流、Answers解答疑問及博客發布資訊,構建全方位資源平臺,加速ROS軟件的知識共享與開發創新。文件系統采用分層文件夾結構組織功能包、元功能包及消息、服務定義,支持自定義擴展,實現代碼、配置與數據的清晰分離,便于管理與復用。ROS架構解析話提和服務區別話題異步廣播適用于數據實時更新少邏輯處理;服務同步調用適合數據量少但邏輯處理強的場景,兩者互補滿足ROS通信需求。參數管理機制利用ROSMaster管理全局參數,節點間通過RPC查詢和更新參數值,實現數據共享和配置靈活性,無需直接交互。服務通信機制簡化雙向通信流程,節點注冊后直接TCP連接交換數據,ROSMaster匹配并提供地址信息輔助建立連接。話提通信機制通過RPC實現節點間信息注冊與匹配,TCP建立網絡連接后進行數據傳輸,ROSMaster作為核心協調節點間的通信過程。ROS通信機制ROS開發基礎小烏龜例程:通過turtlesim功能包學習控制小烏龜移動,掌握ROS節點、話題和服務的基本用法,以及參數調整。工作空間和功能包:介紹ROS工作空間結構及src、build、devel、install目錄作用,并步驟展示如何創建功能包和編譯工作空間。自定義軟件包:深入剖析catkin_create_pkg生成的package.xml和CMakeLists.txt,展示如何自定義這些文件以滿足特定需求。深入工作空間:解釋ROS工作空間Overlaying機制,展示如何通過多個工作空間管理功能包,包括查看環境變量和包路徑。創建自定義的ROS消息和服務:介紹msg和srv文件定義及存放規則,展示如何生成跨語言源代碼,并使用rosmsg和rossrv命令查看消息和服務的定義。話題通信開發:分析小烏龜例程的節點關系和話題通信,使用rostopic和rqt_graph工具調試話題,實現數據發送與訂閱,優化節點間的信息交互。03ROS基礎與通信小烏龜例程烏龜控制流程:安裝turtlesim包后,啟動ROSMaster,運行turtlesim仿真器,再啟動鍵盤控制節點,即可通過方向鍵控制小烏龜在仿真界面移動,享受編程樂趣。turtlesim入門包:turtlesim功能包是ROS提供的入門級功能包,通過鍵盤控制小烏龜移動,初學者可借此了解ROS基礎功能及輔助工具使用,奠定開發基礎。工作空間概覽:ROS功能包源代碼存放于工作空間,其采用Catkin編譯系統,包含src、build、devel、install四目錄,分別用于存儲源碼、編譯緩存、可執行文件及安裝文件。創建與編譯:創建工作空間并初始化,包含運行catkin_make編譯及設置環境變量;同時創建功能包,依賴特定包如std_msgs、roscpp等,確保路徑唯一并編譯以集成開發。創建工作空間和功能包自定義package.xml生成后需編輯description描述,添加maintainer維護者信息,選定license許可證,并列出所有依賴項,確保軟件包正確編譯與運行。消息生成定義新msg后,需更新package.xml并修改CMakeLists.txt以包含消息生成依賴;使用rosmsgshow驗證消息識別,確保ROS正確處理新定義的消息格式。服務復制與適配創建新服務時,利用roscp復制現有srv定義,確保消息依賴正確處理。更新package.xml和CMakeLists.txt以支持服務代碼生成,并通過rossrvshow驗證服務識別。依賴管理在package.xml中聲明依賴項,包括buildtool_depend、build_depend、run_depend等,并確保在CMakeLists.txt中正確設置這些依賴項以生成消息。自定義軟件包工作空間覆蓋機制01ROS通過Overlaying機制管理多個工作空間,按環境變量中路徑順序查找功能包,優先匹配最前端路徑,實現功能包覆蓋,簡化開發并支持多版本共存。路徑管理與環境變量02查看ROS環境變量時,關鍵在于理解ROS_PACKAGE_PATH如何影響功能包查找順序。通過設置或修改此變量,可靈活控制ROS在運行時加載特定版本的功能包。覆蓋風險與策略03工作空間覆蓋雖便利,但需注意版本兼容性和依賴關系變化可能引發的風險。合理組織工作空間,避免不必要的復雜性和潛在的沖突,是高效使用ROS的關鍵。深入工作空間在ROS中,msg文件定義了消息格式,用于不同語言間的消息傳遞;srv文件則定義服務,包含請求和響應部分,兩者均支持跨語言服務調用。Msg與Srv定義定義新msg后,需編輯package.xml并修改CMakeLists.txt以包含消息生成依賴;使用rosmsg工具生成源代碼,確保消息類型在ROS中跨語言使用。消息生成與轉換利用roscp復制現有srv定義至新包,確保消息依賴正確處理。更新package.xml和CMakeLists.txt以支持服務代碼生成,并通過rossrv工具驗證服務識別。服務復制與適配修改CMakeLists.txt以包含新msg和srv生成,并重新編譯軟件包;使用rosmsg和rossrv工具分別顯示消息和服務信息,驗證ROS是否正確識別并處理自定義類型。代碼生成與驗證創建自定義的ROS消息和服務話題分析通過rqt_graph分析小烏龜例程的節點關系,理解話題/turtle1/cmd_vel如何實現鍵盤控制速度指令的發布與訂閱,以及節點間的動態交互。使用rostopic工具如echo和list調試話題通信;echo顯示話題數據,list列出所有活躍話題及其發布者、訂閱者信息,助力深入理解ROS話題機制。通過rostopicecho命令查看/turtle1/cmd_vel話題發布的數據,確認其包含linear和angular速度信息,確保小烏龜控制邏輯正確實現。結合rqt_graph的實時刷新功能與rostopicecho的訂閱操作,觀察話題數據的實時變化及節點間的交互情況,有效定位并解決通信問題。rostopic工具消息類型驗證圖形化調試話題通信開發04服務通信與開發服務節點間通信通過ROS服務框架實現,允許同步請求與響應。客戶端發送請求至服務端,服務端處理后返回結果,適用于復雜邏輯處理和數據交換。服務節點通信編寫ROS服務涉及定義.srv文件,內含請求和響應消息類型,以及實現服務端的C++代碼,接收請求、處理并返回響應,完成服務節點開發。編寫服務文件服務節點開發涵蓋定義.srv文件、編寫C++處理邏輯、編譯運行,需確保依賴正確、代碼無誤,運行后測試驗證服務功能,保障節點穩定運行。編譯運行測試編寫服務節點客戶端節點客戶端節點是使用ROS服務的核心,發送請求并接收服務端的響應。它負責啟動連接、發送請求數據、接收并處理響應,是實現ROS服務通信的關鍵部分。編寫客戶端邏輯編寫ROS客戶端邏輯涉及定義服務類型、啟動與服務端的連接、發送請求數據、接收并處理響應,確保數據正確傳輸與處理,是實現ROS服務通信的關鍵。測試客戶端功能編寫完客戶端節點后,進行充分的測試是驗證其功能正確性的關鍵。這包括模擬各種輸入條件、檢查響應數據的準確性以及處理異常情況,確保客戶端的穩定性。編寫客戶端節點節點構建系統ROS采用Catkin作為構建系統,支持make和ament。Catkin基于make,而ament是輕量級構建系統,提供跨操作系統兼容性。了解并掌握Catkin和ament的使用。編譯設置編譯設置位于工作空間根目錄的CMakeLists.txt和package.xml中。這些文件定義了構建規則和包依賴項,確保所有節點都按需編譯,并引入必要的系統和庫依賴項。編譯節點編譯節點前需確保工作空間正確設置,然后通過catkin_make或colcon等工具編譯。編譯過程生成可執行文件和庫,確保節點正確鏈接和運行,為后續開發打下基礎。構建節點與編譯運行檢驗01編譯完成后,運行檢驗是確保服務端和客戶端正常工作的關鍵步驟。這包括啟動ROSMaster和其他相關節點,以及運行服務端和客戶端進行實際通信測試。測試覆蓋率02測試覆蓋服務端和客戶端的所有功能分支和數據類型,確保無遺漏。這包括正常操作、異常情況和邊界條件測試,以提高服務的可靠性和穩定性。日志調試03運行中查看日志以監控節點狀態和識別潛在問題。日志包含關鍵信息如連接嘗試、數據接收和錯誤消息,幫助快速定位并修復問題,確保服務端和客戶端穩定運行。檢驗服務端和客戶端感謝您的觀看與聆聽第9章
ROS常用組件Contents01.rosbag數據記錄與回放02.launch文件03.TF的作用與使用04.rqt工具箱05.RViz三維可視化工具01rosbag數據記錄與回放啟動roscore進程,作為ROS系統的主節點,隨后在終端中運行turtlesim節點,以啟動turtlesim可視化工具。初始化ROS節點在烏龜移動時,確保選中啟動turtle_teleop_key的終端窗口,以便通過鍵盤方向鍵控制烏龜在屏幕上的移動。記錄話題數據執行turtle_teleop_key命令,啟動一個允許用戶通過鍵盤方向鍵控制turtlesim中烏龜移動的節點。啟動鍵盤控制錄制數據使用rostopic工具檢查當前系統中發布的所有話題,包括/turtle1/color_sensor、/turtle1/cmd_vel等。列出話題創建目錄以存儲數據,運行rosbagrecord-a命令錄制所有發布的話題數據至bag文件,持續記錄直至系統狀態變化。錄制數據在turtle_teleop節點所在的終端窗口中控制烏龜移動約10秒后,按Ctrl+C停止rosbagrecord命令。停止錄制錄制所有發布的話題123運行rosbaginfo查看bag文件內容,確認包含的話題、消息數量和類型,驗證錄制的數據完整性。查看bag文件使用rosbagplay命令回放bag文件,重現系統運行過程,通過控制烏龜移動驗證數據回放的一致性。播放bag文件調整rosbagplay的等待時間和發布速率,觀察烏龜移動軌跡的變化,實現自定義的播放控制。自定義播放檢查并回放bag文件03檢查內容查看subset.bag文件內容,確認僅包含指定話題的數據,驗證錄制數據子集的準確性。01啟動節點重新啟動turtlesim節點和鍵盤控制節點,確保系統處于可錄制狀態,為錄制特定話題做準備。02錄制子集使用rosbagrecord命令,指定輸出文件為subset.bag,并僅訂閱/turtle1/cmd_vel和/turtle1/pose話題。錄制數據子集行為微妙變化:turtlesim的移動路徑對系統定時敏感,rosbag無法完全復制錄制時的系統運行行為,包括消息處理過程中的微小變化。路徑差異:烏龜路徑在rosbag回放時可能與原始鍵盤控制路徑有細微差異,受系統定時精度影響,整體形狀相似但非完全一致。rosbag錄制和回放的局限性02launch文件launch文件介紹Launch文件一鍵啟動:Launch文件集合節點與參數,簡化一鍵啟動。ROS系統復雜,需并行運行多節點,手工啟動繁瑣。Roslaunch工具助力,一鍵啟動,高效管理。Roslaunch簡介:Roslaunch是ROS啟動工具,支持SSH啟動多節點,設置參數,重啟進程,自動啟動roscore。讀取.roslaunch和XML文件,指定參數和節點及運行機器。傳遞參數參數設置語法:在啟動文件中,若需為節點設置參數,采用與ROS重映射相同的語法。例如,為my_file.launch文件中的節點設置arg參數,其值為value。啟動時設置參數:若要啟動的文件指定了需要設置的參數,則可以使用與ROS重映射參數相同的語法進行設置,例如$roslaunchmy_file.launcharg:=value。Launch文件還包含machine、env、test等高級標簽,分別用于定義機器信息、設置環境變量、以及指示測試節點運行。Group標簽用于將一組配置應用于其內部節點,支持命名空間ns。Arg標簽則用于定義啟動參數,提升啟動文件的可重用性和可配置性。Node標簽內可定義name、pkg、type等屬性,同時支持env、remap等子標簽,實現環境變量設置、參數重映射等功能。Launch文件核心為node標簽,定義ROS節點。同時包含rosparam、param、include等標簽,分別用于參數設置、參數傳遞、文件導入。Group與Arg標簽Node節點配置Roslaunch高級標簽Launch文件基礎標簽解析launch文件03TF的作用與使用避免障礙物碰撞通過實時跟蹤和變換坐標,TF能夠確保機器人在復雜環境中精確導航,避免與障礙物發生碰撞,提升機器人操作的安全性和可靠性。參考系跟蹤TF,即時間參考系,功能包通過樹型數據結構,以時間為軸,跟蹤多個參考系變化,維護坐標變換關系,確保數據準確性。坐標變換在機器人系統中,TF幫助用戶查詢不同參考系間的坐標變換,如機器人、激光雷達、相機等相對位置,為導航、感知提供基礎數據。分布式操作TF的分布式操作特性確保所有節點組件均可訪問參考系變換關系,無需中心服務器存儲,提高系統靈活性和可擴展性。TF的作用坐標系變換01在小車系統中,base_laser和base_link是兩個關鍵坐標系。激光傳感器感知障礙物時,需將激光數據從base_laser變換到base_link,確保數據準確性。精度提升02在小車系統中,通過坐標變換精確調整激光雷達數據,減少誤差,提升系統精度,滿足高精度導航需求,確保機器人在復雜環境中穩定運行。ROS與TF框架03ROS提供了TF框架,極大地簡化了坐標系轉換的復雜性,使得開發者無需手動處理繁瑣的坐標關系,提高了開發效率和系統穩定性。TF示例廣播TF變換:向系統中廣播參考系之間的坐標變換關系,直接將變換關系插入TF樹中,無需同步。監聽TF變換:接收并緩存系統中發布的所有參考系變換,并從中查詢所需要的參考系變換。TF使用方法04rqt工具箱日志輸出工具工具啟動:使用rqt_console命令可啟動該工具,界面可視化展示日志內容,支持按級別過濾,方便調試和監控ROS系統運行狀態。消息概述:rqt_console工具用來圖像化顯示和過濾ROS系統運行狀態中的所有日志消息,包括info、warn、error等級別的日志。計算圖展示:rqt_graph工具可以圖形化顯示當前ROS系統中的計算圖,節點和邊清晰展示,便于理解和分析系統運行狀態。工具啟動:在系統運行時,使用rqt_graph命令即可啟動該工具,通過圖形化界面觀察計算圖,提升系統分析和調試效率。計算圖可視化工具數值曲線繪制:rqt_plot是一個二維數值曲線繪制工具,可以將需要顯示的數據在xy坐標系中使用曲線描繪。工具啟動:使用rqt_plot命令啟動工具后,在界面上方的Topic輸入框中輸入需要顯示的話題消息,rqt_plot工具將數據以曲線形式展示。數據繪圖工具動態配置:rqt_reconfigure工具可以在不重啟系統的情況下,動態配置ROS系統中的參數,但是該功能的使用需要在代碼中設置參數的相關屬性。工具啟動:使用rosrunrqt_reconfigurerqt_reconfigure命令啟動工具后,在界面中輸入框、滑動條或下拉框進行設置即可實現參數的動態配置。參數動態配置工具05RViz三維可視化工具RViz安裝與啟動01RViz已集成于ROS桌面完整版,安裝ROS即享。安裝命令是sudoapt-getinstallros-melodic-RViz,啟動是roscore后rosrunRVizRViz。RViz主界面布局02啟動成功的RViz主界面包含0:3D視圖區,用于可視化顯示數據;1:工具欄,提供視角控制、目標設置、發布地點等工具;3:顯示項列表。界面區域功能詳解03顯示當前選擇的顯示插件,可以配置每個插件的屬性;3:視角設置區,可以選擇多種觀測視角;4:時間顯示區,顯示當前的系統時間和ROS時間。安裝并運行RViz添加完成后,RViz左側列出已添加插件;點擊插件列表前加號展開屬性列表,按需求設置。重要屬性為“Topic”,聲明訂閱來源,成功訂閱后中間區顯示數據。如果顯示有問題,請檢查屬性區域的“Status”狀態。Status有四種狀態,如果顯示的狀態不是OK,那么請查看錯誤信息,并詳細檢查數據發布是否正常。點擊RViz界面左側下方的“Add”按鍵,羅列默認支持的所有數據類型顯示插件。在列表中選擇需要的數據類型插件,然后在“DisplayName”里填入名稱。數據以適當的消息類型被發布之后,可在RViz中進行數據可視化。通過選擇相應的RViz插件來訂閱這些消息,即可直觀地展示數據。檢查與調試添加顯示數據插件配置插件屬性數據可視化準備數據可視化RViz默認數據展示:RViz作為三維可視化平臺,默認支持坐標軸、攝像頭圖像、地圖、激光等多種類型數據的展示,為用戶提供了豐富的可視化選項。插件擴展機制:默認可以顯示的數據不僅僅如此。支持插件擴展機制,以上數據的顯示都基于默認提供的相應插件。編寫插件的形式進行添加。插件擴展機制感謝您的觀看與聆聽第10章
機器人平臺技術與應用Contents01.機器人定義與組成02.激光雷達03.深度相機04.機器人教學平臺介紹05.運行機器人01機器人定義與組成機器人定義機器人是自動執行工作的機器裝置,可受人類指揮、運行預設程序或遵循AI原則行動,協助或取代人類工作,如生產、建筑及危險作業。機器人協會定義機器人為可編程序操作器,用于搬運材料、零件、工具,或通過改變程序動作完成各種作業的特殊機械裝置??茖W家定義機器人為自動化機器,具有與人或生物相似的智能能力,如感知、規劃、動作和協同,是一種具有高級靈活性的自動化機器。國際標準組織描述機器人為動作機構似人或其他生物體,通用性強,工作多樣,動作程序靈活,具智能性如記憶、感知等,可獨立工作。數字化、云計算和AI技術進展推動機器人應用擴展,下一代機器人將涵蓋更廣泛概念,如無人駕駛汽車、智能家電等,都將會機器人化。機器人協會定義國際標準定義機器人定義展望科學家定義機器人定義控制系統控制系統基于處理器(如ARM、x86)實現任務處理、輸出控制命令,相當于人的大腦,完成算法、關節控制、人機交互等功能。傳感系統傳感系統包括內外兩部分,相當于人體感官和神經,內部包括里程計、陀螺儀等,外部包括攝像頭、紅外等環境檢測傳感器。驅動系統驅動系統驅動執行機構,轉換控制命令為執行機構信號,如直流電機用PWM驅動板,伺服需專業驅動器,工業常用氣壓液壓。執行機構執行機構是直接面向工作對象的機械裝置,相當于人體的手和腳。根據不同的工作對象,適用的執行機構也各不相同。機器人組成02激光雷達測距原理01激光雷達通過發射激光束并接收目標回波,對比發射與回波信號,經處理后獲取目標距離、方位、高度、速度、姿態及形狀等參數,實現探測、跟蹤和識別。三角測距法02三角測距法通過激光器和CCD接收器的配合,利用光學路徑和三角公式計算被測物體距離。隨著目標距離的變化,反射光在CCD上成像位置也不同。TOF飛行時間測距03TOF測距法通過記錄激光脈沖的發射和回返時間差,結合光速計算距離。該方法無需復雜運算,實時性高,適用于長距離測量,對環境光影響小。激光雷達簡介角度分辨率決定激光雷達一次完整掃描能返回多少個樣本點,直接影響其空間感知能力。樣本點越多,對環境的描繪越細致,能提供更多的空間信息??梢暦秶羌す饫走_完整掃描的廣角,定義了其有效探測和感知的范圍。范圍外為盲區,超出此區域的目標可能無法被雷達探測到,影響感知性能。掃描頻率反映激光雷達完成一次完整掃描的速度,通常在10Hz及以上。頻率越高,意味著雷達能更快獲取周圍環境信息,適用于需要實時響應的應用場景。測距分辨率衡量激光雷達在特定距離下的測距精確程度,通常與真實值相差5-20mm。該指標越高,表示雷達對距離變化的感知越敏感,定位能力越強??梢暦秶鷴呙桀l率角度分辨率測距分辨率激光雷達參數03深度相機深度相機應用:通過三維坐標還原真實場景,實現精準的場景建模和識別。在機器視覺、自動駕駛等前沿技術應用中發揮著不可或缺的作用,推動技術的持續發展。深度相機功能:普通彩色相機捕捉視角內物體,但不測量距離;深度相機則提供每個點到攝像頭的距離,結合2D坐標,可確定圖像中每點的三維空間坐標。深度相機簡介通過近紅外激光器投射結構光到物體上,紅外攝像頭采集反射光信息,運算單元處理結構變化得深度信息,構建三維結構,光源為不可見紅外激光。結構光深度相機雙目立體視覺通過左右相機捕捉圖像,計算視差獲取三維信息,成本低,室內外適用,但對環境光、紋理、計算復雜度高,且基線限制測量范圍。雙目立體視覺通過發射激光脈沖并檢測反射光相位偏移,計算目標物距離,檢測距離遠、受環境光干擾小,但對設備要求高、資源消耗大、邊緣精度低。TOF深度相機深度相機分類04機器人教學平臺介紹供電系統機器人采用專用電源板,支持多電壓輸出,為底盤、機械臂及傳感器模塊穩定供電,確保機器人高效、持續工作。接口擴展性通過USB接口連接激光雷達、高清相機等模塊,Nano主控配備USB3.0HUB,實現接口擴展,滿足多樣化傳感需求。控制器配置配備NvidiaJetsonNano作為ROS主控制器,底盤與機械臂擁有獨立控制器,實現高效協同作業,確保機器人運行流暢。模塊化設計Abot機器人采用模塊化設計理念,底盤與機械臂實現相對獨立,便于單獨控制與維護,提升了機器人的靈活性與擴展性。硬件框架
ROS控制器采用JetsonNano作為ROS節點控制器,運行Ubuntu18.04withJetPack系統,并安裝Melodic版本的ROS機器人操作系統。底盤控制器OpenCRP機器人運動控制器以STM32F103為核心,集成IMU傳感器,支持4路直流電機閉環控制,便于USB軟件升級。激光雷達塔克T1激光雷達經過優化,專為ROS機器人設計,具備高測量頻率和精度,適用于家庭、實驗室等環境,光磁融合供電通信。核心組件說明專用電源板提供12V、7.2V和5V電源輸出,滿足機器人不同模塊需求,方便用戶進行功能擴展與升級。電源接口機器人對激光雷達和機械臂的USB通訊與控制端口進行了綁定,確保數據通信的準確性和穩定性,提升整體運行效率。USB端口核心組件說明集成1080PRGB相機與深度感知功能,配備雙立體聲麥克風及高端ISP芯片,支持環境光調節,優化圖像質量,適合機器人視覺處理。深度相機機械臂末端配備1080P高清攝像頭,具備120°廣角與UVC免驅功能,支持語音識別,并配備云臺實現手動調節視角。攝像頭配備6自由度機械臂,采用高精度舵機與金屬齒輪傳動,結合進口雙滾珠軸承和CNC鋁合金中殼,確保長久穩定運行。機械臂核心組件說明05運行機器人ROS分布式協同01由于ROS具有分布式的特性,所以我們可以在多臺計算機上進行協同工作,前提是已經在計算機上配置好了環境變量ROS_MASTER_URI。ROS_MASTER_URI配置02ROS_MASTER_URI的值為運行ROSMASTER計算機的IP地址,必須將所有要協同工作的計算機的ROS_MASTER_URI設為相同的值。ROS_IP配置03除ROS_MASTER_URI外,還要配置環境變量ROS_IP為本機的IP地址,機器人的配置機器人上的環境變量默認已經配置完畢,配置都已寫入~/.bashrc文件中。配置環境變量ROS_IP自動檢測:此處ROS_IP的配置為自動檢測IP地址,并且將ROS_IP作為ROS_MASTER_URI,當用戶打開終端時,終端中會顯示配置好的環境變量。建議手動設置IP:建議將機器人的IP地址配置為手動(本例設置為192.168.31.101),這樣我們機器人的IP地址就不會每次都變化,我們的其他電腦也不需要再重新配置環境變量了。PC虛擬機配置:修改PC虛擬機的環境變量,修改的內容與機器人類似,我們需要做的就是把ROS_MASTER_URI修改為機器人的IP地址,~/.bashrc文件中的ROBOT_IP環境變量即為機器人IP。更新環境變量配置:執行下面的命令來更新我們的配置,,更新并應用環境變量更改,確保系統配置的一致性。配置環境變量Ssh遠程連接ssh遠程連接可以讓我們在終端中直接登陸上遠程機器的系統,輸入以下命令來連接到機器人(將IP地址替換為自己的地址),<table><tr><td>sshxtark@192.168.31.101</td></tr></table>。Ssh命令別名如果上一節的ROBOT_IP已經配置好,我們也可以使用一個ssh命令的別名來連接到機器人,此別名設置如下圖,首次連接會有如下提示,我們輸入yes并按回車繼續進行。Ssh登錄遠程機接下來ssh提示我們需要輸入遠程機器人的用戶密碼,我們輸入密碼(此機器人用戶名和密碼默認都是xtark)按下回車即可登錄到遠程機器,登錄后終端等同直接在機器人上執行。遠程連接機器人Ssh斷開連接想要從此終端斷開與遠程機器的連接,則只需要在終端中按下Ctrl+D即可斷開,Sssh遠程連接是控制遠程機器人系統的直接方式,允許在終端中直接輸入命令,這些命令會在機器人上執行。Vnc遠程桌面對于大多數應用場景來說是不方便的,如果我們需要用到ROS機器人的圖形界面時怎么辦呢?可以采用遠程桌面連接的方式進行遠程連接機器人的圖形界面。Vnc連接遠程機在Linux下內置的VNC服務是較為方便的,所以我們采用VNC協議進行連接,VNC遠程軟件,在Linux下我們采用Ubuntu內置的Remmina,在Windows下我們采用免費的VNCViewer。遠程連接機器人Vnc連接實例以VNCViewer為例,連接步驟如下圖,確保機器人與我們PC在同一局域網下且已經配置好IP即可開始連接,機器人VNC服務器登錄賬號為xtark,密碼為xtark。Vnc新建連接新建連接,輸入IP地址和VNC主機名稱(用戶自定義),單擊OK按鈕,輸入機器人VNC密碼,點擊確定即可連接到機器人遠程桌面。遠程連接機器人ROS節點列表:在PC虛擬機上執行rosnodelist-a命令后,成功看到rosout節點以及運行此節點的主機地址為機器人的主機地址,證明我們已經配置好了ROS的環境變量。Ssh連機器人:首先我們用ssh連接到機器人,然后打開一個終端并運行roscore,如圖10-28所示roscore是ROS的根節點,它初始化并管理整個ROS系統。驗證配置要點三控制節點原理運行原理非常簡單,機器人內置了底盤驅動節點,存放在xtark_driver功能包中,節點名稱也叫xtark_driver,此節點通過訂閱話題,cmd_vel來獲取控制底盤移動的命令。要點一要點二控制底盤移動話題的消息類型為geometry/Twist,此消息類型為兩個三維向量,分別控制底盤的線速度和角速度,詳細內容如圖10-30所示。想要控制機器人移動,只需要向此話題發布Twist類型的消息即可。鍵盤控制節點robot內置了通過鍵盤來發布消息的節點,存放在xtark_ctl包中,名稱為xtark_twist_keyboard.py,此外這個功能包中還有一個launch文件,xtark_bringup_keyboard.launch。要點三鍵盤控制機器人移動鍵盤控制機器人移動Launch文件內容:可以幫我們集成啟動底盤驅動節點和鍵盤控制節點,此文件內容如圖10-31所示,我們只需要運行此launch文件即可用鍵盤來控制底盤移動。遠程控制機器人:因為機器人會到處亂跑,所以我們最好是以遠程的方式控制它,首先回到自己的虛擬機上執行ssh命令連接到機器人例如。連接機器人:輸入正確的密碼后,輸出內容提示我們已經連接上了機器人系統,可以開始通過鍵盤控制節點的運行來遠程操控機器人移動了。鍵盤控制機器人:運行launch文件后看到提示按下對應鍵即可控制機器人運動如圖10-33所示robot運動鍵盤控制鍵是方便用戶通過鍵盤上的特定按鍵來直接控制機器人的運動方向。感謝您的觀看與聆聽第11章
SLAM建圖與自主導航Contents01.引言02.基礎理論04.SLAM建圖03.準備工作05.amcl功能包與代價地圖的配置06.機器人導航實踐07.多點連續導航01引言室內機器人定位導航挑戰服務型室內移動機器人面臨地圖構建、定位和路徑規劃等挑戰,需解決精度、穩定性和實時性問題。機器人技術瓶頸室內機器人需實現實時地圖更新、準確定位和實時路徑規劃,以滿足快速響應和高效導航的需求。實時性與準確性室內環境復雜多變,光照、障礙物等影響機器人感知和決策,需提升機器人環境適應性和魯棒性。室內環境復雜性123SLAM通過實時感知環境并構建地圖,實現機器人在無GPS信號或先驗信息缺失環境中的自主定位與導航。SLAM技術優勢SLAM技術從軍事領域拓展至掃地機器人、無人機等民用領域,成為智能系統實現自主導航的關鍵技術。技術應用廣泛科研人員持續優化SLAM算法,提升其精度、魯棒性和實時性,推動相關應用向更廣泛領域滲透。算法不斷優化SLAM技術崛起及應用03未來展望隨著技術不斷發展,基于ROS的機器人SLAM與導航技術將更加成熟,為機器人技術的廣泛應用奠定基礎。01ROS功能包ROS提供了如gmapping、hector_slam、cartographer等功能包,簡化了機器人的SLAM和導航開發。02實踐項目通過具體項目實踐,如使用ROS實現機器人的實時地圖構建與自主導航,可深化對理論知識的理解與應用。ROS機器人SLAM與導航實踐02基礎理論0102SLAM核心概念SLAM,即時定位與地圖構建,驅動機器人未知環境自主探索。機器人邊移動邊構建地圖,持續定位自身,實現智能導航與路徑規劃。盲人比喻借盲人探索比喻SLAM,盲人伸手探測障礙,移動校正地圖與位置,體現SLAM核心,機器人亦如此,不斷感知、定位、建圖,實現自主導航。盲人感知局限盲人探索環境,感知有限,會存在誤差,他根據確定程度為障礙物設置概率值,概率越大,障礙物可能性越高,體現SLAM探索的局限性。應用場景家庭、商場、車站等室內場所是室內機器人的主要應用場景,在這些應用中,用戶需要機器人通過移動完成某些任務,這就需要機器人具備自主移動、定位的功能。自主導航自主導航與SLAM緊密相連,SLAM生成的地圖是機器人移動的藍圖,引導機器人精準定位,規劃最優路徑,避開障礙物,實現高效、智能的自主移動。030405SLAM簡介深度信息獲取01機器人SLAM與自主導航的關鍵在于感知周圍環境,特別是深度信息,用于探測障礙物距離。激光雷達、攝像頭和RGB-D攝像頭是獲取深度信息的三種主要傳感器。激光雷達02激光雷達是研究最多、使用最成熟的深度傳感器,提供精確的距離信息,用于掃地機器人等。其優點是精度高、響應快、數據量小,適合實時SLAM;缺點是成本高。RGB-D攝像頭03RGB-D攝像頭融合了RGB圖像和深度信息,適用于SLAM、圖像處理和物體識別。其成本較低,但存在測量視野窄、盲區大和噪聲大等缺點,是室內服務機器人的主流方案。傳感器簡介激光雷達通過發射接收激光束,實現3D掃描,獲取周圍環境深度信息。機器人利用這些數據實現精準避障,確保在復雜環境中穩定運行。3D掃描與避障在室內定位與建圖方面,激光雷達具有顯著優勢;它為機器人提供精確的環境數據,支持實時地圖構建與定位,是實現智能導航的關鍵技術。室內定位與建圖盡管激光雷達具有高精度和穩定性,但成本較高;因此,在選用時需綜合考慮性能與成本,選擇性價比優的產品,以滿足不同應用場景的需求。性能與成本考量激光雷達單目攝像頭:單目攝像頭以一個攝像頭完成SLAM任務,具有傳感器簡單、適用性強的特點;但實現過程復雜,且在靜止狀態下無法測量距離,需依賴運動狀態下的三角測量原理。雙目攝像頭:雙目攝像頭通過兩個攝像頭協同工作,實現距離信息的感知,無論在運動或靜止狀態下均能進行有效測量;然而,兩個攝像頭的精確標定較為復雜,且圖像數據量大導致運算量大。攝像頭室內應用主流:RGB-D攝像頭因其成本低廉且性能穩定,成為室內服務機器人的首選傳感器方案;然而,其測量視野相對較窄,且存在盲區和噪聲問題,需在實際應用中加以注意。融合感知技術:RGB-D攝像頭通過融合RGB圖像與深度信息,實現環境的三維重建與深度感知。其獨特優勢在于能夠精準識別物體位置與姿態,為SLAM提供強有力的支持。RGB-D攝像頭03準備工作環境深度信息無論是SLAM還是自主導航,獲取周圍環境的深度信息都是至關重要的。要獲取深度信息,首先要清楚ROS中的深度信息是如何表示的。激光雷達掃描數據針對激光雷達,ROS在sensor_msgs包中定義了專用數據結構——LaserScan,用于存儲激光消息。LaserScan消息的具體定義如下圖所示。雷達驅動與launch文件機器人教學平臺的激光雷達節點,可視化機器人的激光雷達發布的數據,機器人的雷達驅動launch文件存放在xtark_driver功能包中。傳感器信息啟動雷達驅動節點遠程連接機器人,啟動此launch文件,將雷達驅動起來,然后在PC端(注意,非機器人端)啟動RViz,按照添加雷達數據的話題。固定幀修改與顯示添加完成后,按將GlobalOptions里的FixedFrame修改為laser,即可在三維界面中看到我們的雷達掃描出的環境深度信息數據。里程計信息里程計根據傳感器獲取的數據來估計機器人隨時間發生的位置變化,在機器人平臺中,較為常見的里程計是編碼器,例如,機器人驅動輪配備的旋轉編碼器。傳感器信息機器人當前的運動狀態,包括x、y、z三軸的線速度與角速度,以及用于校正誤差的協方差矩陣。上述數據結構中,除速度與位置的關鍵信息外。在精度要求不高的機器人系統中,可以使用默認的協方差矩陣;而在精度要求較高的系統中,需要先對機器人精確建模后,再通過仿真。機器人能夠發布里程計nav_msgs/Odometry消息,如圖11-11所示,包含機器人在自由空間中的位置和速度估算值,pose為機器人當前位置坐標。機器人移動時,編碼器測量輪子旋轉圈數;知周長,可算速度與距離。里程計通過速度積分求位置,對誤差敏感,需精確采集、標定、濾波等措施。精度需求與協方差矩陣導航功能包要求twist編碼器測量輪距傳感器信息里程計數據估計里程計根據傳感器數據估計機器人位置變化,常見里程計為編碼器;通過測量輪子旋轉圈數和周長,可計算機器人速度和移動距離。深度信息獲取無論是SLAM還是自主導航,獲取周圍環境的深度信息都是至關重要的;要獲取深度信息,首先要清楚ROS中的深度信息是如何表示的。LaserScan消息定義LaserScan消息定義包含角度、時間、距離等信息,用于存儲激光雷達掃描數據;angle_min和angle_max定義可檢測范圍。激光雷達數據采集運行機器人教學平臺的激光雷達節點,并啟動相應的launch文件,可在RViz中可視化激光雷達掃描的環境深度信息數據。環境深度信息數據采集與標定01里程計根據傳感器獲取的數據來估計機器人隨時間發生的位置變化,在機器人平臺中,較為常見的里程計是編碼器,例如,機器人驅動輪配備的旋轉編碼器。發布Odometry消息02導航功能包要求機器人能夠發布nav_msgs/Odometry消息,包含機器人在自由空間中的位置和速度估算值,以及用于校正誤差的協方差矩陣。精度需求與矩陣設定03在精度要求不高的機器人系統中,可以使用默認的協方差矩陣;而在精度要求較高的系統中,需要先對機器人精確建模后,再通過仿真、實驗等方法確定。里程計信息04SLAM建圖gmapping優缺點gmapping實時構建室內地圖,適用于小場景,對激光雷達頻率要求低且魯棒性強。相比Cartographer,gmapping計算量小、精度相當且能利用里程計信息,但構建大地圖時受內存和計算量限制,且無回環檢測可能導致地圖錯位。gmapping功能包gmapping功能包采用Rao-Blackwellized粒子濾波算法,訂閱深度信息、IMU和里程計,配置參數后輸出二維柵格地圖。支持的話題和服務包括地圖數據發布、坐標變換及動態地圖獲取,同時提供豐富的配置參數以滿足不同應用需求。gmapping建圖流程在機器人中啟動gmapping建圖,需發送SSH命令以遠程連接機器人并執行建圖文件。該過程包括啟動鍵盤控制節點以手動控制機器人移動,同時在PC上啟動RViz并加載配置文件以實時查看地圖。建圖完成后,使用map_saver節點保存地圖。gmappinghector-slam的優點在于無需里程計,適應空中無人機及地面小車在不平坦區域建圖,通過高斯牛頓方法優化激光點陣,實現精準映射。但依賴于高頻率、低噪聲雷達,且建圖效果受速度影響,無法有效利用精確里程計信息,存在局限性。hector_slam的核心是hector_mapping節點,訂閱激光數據/scan并發布構建的地圖及機器人位姿話題。支持的話題包括激光掃描數據、系統命令等,發布的話題有地圖Meta數據、柵格地圖、機器人位姿等,同時提供服務動態獲取地圖數據。在機器人中啟動hector建圖需發送SSH命令以遠程連接機器人并執行建圖文件,同時啟動鍵盤控制節點以低速控制機器人移動。在虛擬機上啟動RViz并加載配置文件以查看建圖過程,建圖完成后使用map_saver保存地圖,并關閉相關節點。hector優缺點hector功能包hector建圖流程hector-slamcartographer的優缺點采用基于圖網絡的優化方法,占用計算資源少,能有效避免建圖中移動物體的干擾,并支持大環境。但相較于其他SLAM算法,它占用內存較大,需要考慮到資源消耗問題,在資源受限的環境下需謹慎使用。cartographer功能包需要源碼編譯安裝,將創建一個工作空間catkin_google_ws并下載源碼編譯。為避免沖突,已安裝人員可跳過。安裝涉及更新、初始化、合并ROS安裝、編譯及設置環境變量等步驟,確保所有依賴正確安裝。在機器人中使用cartographer在機器人教學平臺中,啟動cartographer建圖算法需發送SSH命令連接機器人并執行集成啟動文件。該文件啟動了必要的底層驅動和cartographer算法節點。通過虛擬機中的鍵盤控制節點和RViz進行建圖操作。cartographer05amcl功能包與代價地圖的配置amcl支持靈活配置,通過調整粒子數、誤差界限、更新間隔等參數,可以根據具體應用場景優化定位性能,同時提供初始化姿態、激光模型和里程計模型等高級配置選項。amcl與里程計同為機器人定位工具,里程計依賴連續運動數據定位,而amcl通過匹配激光掃描實現定位,兩者結合使用,可以互補優缺點,提升機器人定位的穩定性和準確性。訂閱激光雷達、TF變換和地圖數據,發布機器人在地圖中的位姿估計及粒子云,提供全局定位服務,并通過服務調用實現地圖獲取和恢復操作,靈活應對不同定位需求。amcl功能包提供自適應蒙特卡羅定位方法,通過粒子濾波器在地圖中跟蹤機器人姿態,實現自主定位。這種方法基于概率統計,能處理機器人任意狀態下的定位問題。里程計與amclamcl話題服務amcl配置參數amcl定位方法amcl功能包本地規劃配置文件為本地代價地圖提供寬度、高度、分辨率等參數,這些參數適用于局部路徑規劃和實時避障,確保機器人在復雜環境中能夠靈活導航。代價地圖配置導航功能包使用代價地圖來存儲環境障礙信息,通過配置文件設置地圖參數,如更新頻率、發布頻率、靜態地圖等,以適應不同的導航需求。通用配置文件定義共用的代價地圖參數,如障礙物范圍、射線追蹤范圍、機器人足跡、膨脹半徑等,這些參數確保了代價地圖能夠準確地反映環境障礙信息。全局規劃配置文件針對全局代價地圖,設置參考系、更新頻率、是否靜態地圖等參數,這些參數有助于規劃全局路徑,實現高效、準確的全局導航。代價地圖的配置06機器人導航實踐遠程連接:通過安全的SSH協議遠程連接至機器人,確保實時操作與監控的無界限,為導航任務奠定堅實基礎。地圖準備:啟動機器人激光雷達節點,利用RViz三維可視化工具實時查看并確認雷達掃描到的環境深度信息,為后續導航任務提供精準地圖支持。遠程鏈接與地圖準備遠程連接到機器人,啟動gmapping建圖文件的集成文件,該文件包含所有gmapping建圖所需的節點和配置,用于生成室內地圖。啟動gmapping啟動hector_mapping建圖算法的集成文件,該文件包含必要的節點和配置,用于構建地圖,適用于空中無人機及地面小車等特殊平臺。啟動hector啟動cartographer建圖算法的集成文件,該文件包含所有cartographer建圖所需的節點和配置,實現實時高精度2D地圖構建。啟動cartographer啟動導航集成文件RViz可視化與標定坐標變換標定:利用RViz中的工具和功能,對激光雷達坐標系與機器人基坐標系、里程計坐標系之間的變換進行精確標定,確保導航信息的準確無誤。RViz配置:在虛擬機上啟動RViz,并加載事先準備好的RViz配置文件,該文件包含固定視角、話題訂閱等設置,確保三維可視化界面的準確性和實用性。自動避障:機器人通過超聲波傳感器或激光雷達實時檢測到障礙物,并能夠自主規劃路徑,繞開障礙物繼續前行,實現智能自主的移動。精度測試:通過模擬復雜環境,在地圖上設置隨機分布的障礙物,測試機器人在導航過程中的定位精度和路徑規劃能力,確保其在真實環境中的可靠運行。機器人自動避障導航07多點連續導航導航框架01機器人導航核心在于精準定位與高效路徑規劃。ROS導航框架集成amcl定位與move_base規劃,實現實時避障與智能導航,部署簡便,性能卓越。傳感器信息02導航功能包需機器人定期發布激光掃描或點云數據,實時感知周邊環境。同時,發布里程計信息及TF變換,確保定位準確性與地圖更新及時性??刂浦噶?3導航功能包的輸出是geometry_msgs/Twist格式的控制指令,這就要求機器人控制節點具備解析控制指令中線速度、角速度的能力,控機器人運動。單點導航基礎目標位置機器人導航功能強大,支持多點連續導航。通過逐個設定目標位置,機器人能夠自動規劃路徑,實現多地點間的高效、自主導航,無間斷運行。實時更新在執行連續導航任務時,機器人能夠根據實時感知的環境信息,靈活調整行駛路線,有效避開障礙物,確保了導航過程的順暢與安全。狀態監控通過遠程終端,用戶可實時監控機器人狀態與導航進度。利用amcl的精確定位能力,用戶能準確掌握機器人的位置與運行軌跡,確保任務執行無誤。多點連續導航操作RViz配置RViz作為3D可視化工具,在機器人導航中扮演關鍵角色。通過配置全局與局部成本地圖的顯示參數,包括透明度、高度等,可直觀展現機器人的運行環境與障礙物分布。啟動與加載啟動RViz后,加載事先準備好的配置文件(.rviz或.config文件),該文件包含了所有必要的視圖設置、數據訂閱與交互配置,確保了RViz界面與用戶需求的一致性。交互操作利用RViz的2D/3D視圖功能,對機器人進行遠程監控與操控。通過調整視角、縮放畫面,實時掌握機器人動態,實現遠程操作的直觀與便捷,提升用戶體驗。RViz工具應用感謝您的觀看與聆聽第12章
機器人視覺01.攝像頭標定02.OpenCV圖像處理示例03.二維碼識別04.視覺目標追蹤機器人視覺05.深度相機與VSLAM06.RTAB-SLAM三維建圖01攝像頭標定誤差避免:在機器人視覺應用中,攝像頭標定至關重要,它不僅關乎圖像的清晰度,更直接影響物體識別的準確性和三維重建的精度,忽略標定或標定不精準都可能導致嚴重誤差。攝像頭標定:攝像頭標定是矯正圖像畸變的關鍵步驟,通過精確識別攝像頭內部參數和畸變系數,可以有效消除拍攝過程中產生的幾何和光學畸變,從而提升圖像質量。攝像頭標定與誤差避免安裝準備在ROS環境下,進行攝像頭標定前,需確保已安裝相應的功能包,如“camera_calibration”,該包提供了雙目及單目攝像頭標定的工具,支持多種標定板模式。ROS攝像頭標定功能包啟動深度相機:通過roslaunch命令啟動深度相機節點,例如xtark_depthcamera.launch,并在RViz中添加三維點云顯示,配置話題/camera/depth_registered/points。點云數據解析:點云數據使用sensor_msgs/PointCloud2消息類型傳輸,包含高度、寬度、字段、大小端順序、點步長、行步長及數據數組等字段,支持高效存儲與處理。深度攝像頭捕獲三維點云02OpenCV圖像處理示例OpenCV圖像處理示例涵蓋Camshift追蹤、凸多邊形檢測、離散傅里葉變換等,功能強大,輕松應對復雜視覺挑戰。圖像處理核心圖像金字塔采樣、相位相關位移檢測、RGB顏色空間濾波、前景物體檢測、圖像平滑、閾值濾波等,助力精準圖像分析。圖像分析與處理邊緣檢測、人臉識別、光流計算、輪廓提取、特征追蹤、顏色空間濾波、圓環與直線檢測、人體識別等,一應俱全。視覺算法大全OpenCV圖像處理功能清單人臉檢測流程01首先通過ssh遠程連接到機器人,啟動機器人攝像頭驅動launch文件,命令如下,roslaunchxtark_driverxtark_camera.launch。人臉識別啟動02然后再新建一個終端,ssh遠程連接到機器人啟動人臉識別launch文件,命令如下,roslaunchxtark_opencvxtark_face_detection.launch。查看識別結果03最后再打開一個終端,在虛擬機上運行rqt_image_view圖像查看節點,rosrunrqt_image_viewrqt_image_view,并選擇對應的話題。人臉檢測示例03二維碼識別ar_track_alvar具備高效標簽識別能力,速度不受標簽數量增加的影響,同時自動計算標簽間空間關系,無需手動測量和輸入。功能包在機器人定位、導航、增強現實(AR)應用等領域具有廣泛應用,能夠提供精確的二維碼識別和跟蹤服務。功能包能識別多標簽捆綁包,通過光流跟蹤實現穩定姿態估計,支持自適應閾值處理,確保在各種照明條件下穩定運行。ar_track_alvar是ROS中用于二維碼識別的功能包,能夠生成不同大小、分辨率和編碼的AR標簽,并識別跟蹤這些標簽的姿態。ar_track_alvar應用ar_track_alvar特點ar_track_alvar優勢ar_track_alvar介紹識別功能包創建二維碼標簽參數:createMarker工具提供了靈活的參數配置,不僅支持數字標號,還允許使用字符串、文件名、網址等作為標簽編碼,同時允許設置二維碼尺寸。創建二維碼標簽:使用rosrun命令的ar_track_alvarcreateMarker工具,結合源碼地址,可以輕松創建帶有特定標號的二維碼AR標簽,并保存在當前目錄下。生成二維碼標簽通過執行roslaunch命令啟動機器人上的二維碼識別程序,該程序包含在xtark_ar_track功能包中,并已配置好相機參數,實現快速識別。啟動二維碼識別程序在虛擬機中運行RViz可視化工具,并加載二維碼識別的配置文件(如xtark_ar_track.RViz),以查看機器人攝像頭捕捉到的實時圖像。運行RViz查看圖像在RViz界面中,當二維碼標簽進入攝像頭視野時,ar_track_alvar功能包將識別并顯示帶有坐標軸的二維碼圖像,表明二維碼的姿態已被準確識別。二維碼識別結果攝像頭識別二維碼04視覺目標追蹤KCF算法介紹KCF,全稱為KernelCorrelationFilter,核相關濾波算法,在2014年由JoaoF.Henriques等人提出,以卓越的跟蹤效果和速度轟動學術與工業界。KCF是一種高效的判別式跟蹤算法,通過訓練目標檢測器,在跟蹤過程中實時檢測目標位置,并利用新檢測結果更新訓練集以優化目標檢測器。采用目標周圍區域的循環矩陣采集正負樣本,利用嶺回歸訓練目標檢測器,并成功將矩陣運算轉化為向量的Hadamard積,大大降低了運算量。線性空間的嶺回歸通過核函數映射到非線性空間,在非線性空間通過求解一個對偶問題和某些常見的約束,同樣的可以使用循環矩陣傅里葉空間對角化。KCF算法給出了一種將多通道數據有效融入該算法的途徑,使得算法能夠處理更豐富的目標特征,從而提升跟蹤的準確性和魯棒性。判別式跟蹤方法核函數擴展多通道數據融合正負樣本采集KCF算法簡介利用KCF算法,可以輕松地跟蹤任意物體。目標特征越明顯,表面越平整,其跟蹤效果就越好。例如,跟蹤一個泡沫方塊或手提箱,都能獲得良好的效果。機器人將會利用深度相機來獲取物體離機器人的距離,并利用KCF算法使物體保持在畫面正中心,機器人將會跟物體保持1.5m左右距離跟蹤物體運動。通過終端輸入命令$roslaunchxtark_kcf_trackerxtark_kcf_tracker.launch,即可啟動KCF跟蹤算法,隨后呈現清晰的攝像頭實時畫面。機器人教學平臺中的xtark_kcf_tracker程序包提供了基于KCF的物體追蹤功Demo。使用VNC遠程連接機器人,并打開終端準備運行KCF算法。相機應用啟動KCF跟蹤算法跟蹤效果遠程連接KCF物體跟蹤算法使用05深度相機與VSLAM深度相機模擬雷達:利用深度相機單行掃描數據模擬激光雷達,實現建圖導航。這種方法能降低成本,增加應用靈活性,尤其適用于復雜或動態環境。SLAM建圖與導航:通過遠程連接機器人,使用gmapping或karto等算法進行slam建圖,隨后利用導航算法實現自主導航功能,顯著提升機器人智能與自主能力。深度相機模擬激光雷達ORB_SLAM簡介01RB-SLAM是Zaragoza大學開發的視覺SLAM系統,使用ORB特征,支持單目、雙目和RGB-D相機。它包含視覺里程計、跟蹤和回環檢測,實現全稀疏特征點SLAM。ORB_SLAM優缺點02優點在于代碼構造優秀,適合移植;采用g2o優化減少誤差;DBOW減少計算量,回環匹配和重定位效果好;關鍵幀篩選提高追蹤魯棒性;提供詳盡實驗結果展示性能。機器人ORB-SLAM建圖03通過SSH連接到機器人,運行xtark_ORBSLAM.launch啟動ORB_SLAM。在虛擬機上打開RViz,加載xtark_orb.RViz配置文件查看算法界面??刂茩C器人移動進行建圖。ORB_SLAMORB-SLAM2介紹:基于單目、雙目和RGB-D相機的完整SLAM方案,實現地圖重用、回環檢測和重新定位。它采用光束法平差優化(BA)確保軌跡精確度,并包含輕量級定位模式追蹤未建圖區域。機器人ORB_SLAM2建圖:通過VNC連接到機器人遠程桌面,運行xtark_ORBSLAM2.launch啟動ORB-SLAM2。程序打開兩個窗口,顯示視角圖片和關鍵點地圖。初始化后,機器人被精準定位。ORB_SLAM206RTAB-SLAM三維建圖RTAB-MapROS節點需要輸入TF、里程計和相機輸入(RGB-D或雙目圖像),以及校準消息;可選輸入包括2D或3D激光雷達掃描或點云。MapData包含最新添加的節點和Graph,而MapGraph是無數據的純圖;此外,還可輸出TF矯正過的里程計、OctoMap、稠密點云地圖和2D占用柵格地圖。從2013年開始,RTAB-Map已經擴展到完整的基于圖的SLAM方法,被用于各種設置和應用,因此RTAB-Map已經發展成為一個跨平臺的獨立C++庫。RTAB-Map,全稱為Real-TimeAppearance-BasedMapping,是一個用于基于外觀的實時建圖的開源庫,能夠通過內存管理方法實現回環檢測。輸出類型回環檢測輸入要求RTAB-Map定義RTAB-SLAM介紹0102建圖配置文件機器人使用RTAB_SLAM算法進行建圖,在建圖中激光雷達數據是可選的,加上激光雷達數據后算法會更精準,效果更好。啟動RTAB建圖通過SSH連接到機器人,執行roslaunch命令啟動RTAB-SLAM深度相機建圖,若需融合激光雷達數據,需切換至對應launch文件。RTAB建圖界面啟動成功后在虛擬機端再打開一個終端,運行RViz可視化界面,并打開rtab_mapping.RViz配置文件,即可看到RTAB-SLAM算法建圖界面。3D地圖在虛擬機端運行鍵盤控制節點,可以控制機器人移動,從而建立場景的3D地圖;同時RTAB-SLAM建圖帶有閉環修正環節,可以提高建圖精度。保存地圖當完成建圖后可以直接按下Ctrl+C退出建圖節點,算法將會自動保存地圖(RTAB-SLAM算法地圖保存為*.db格式,自動保存路徑為~/.ros/rtabmap.db)。030405機器人RTAB建圖導航配置文件機器人使用RTAB_SLAM算法進行導航,在導航中激光雷達數據是可選的,加上激光雷達數據后算法會更精準;單獨利用深度相機的launch文件為xtark_RTABSLAM_Navigation.launch。啟動RTAB導航通過SSH連接到機器人,執行roslaunch命令啟動RTAB-SLAM導航程序(此處選擇僅使用深度相機。若需融合激光雷達數據,需切換至對應launch文件并執行相應步驟)。RTAB導航界面啟動成功后在虛擬機端再打開一個終端,運行RViz可視化界面,并載入xtark_rtabnav.RViz配置文件;載入后可以看到RTAB-SLAM導航界面,從而實時掌握機器人導航狀態。機器人RTAB導航啟動導航后,RTAB-SLAM算法可以自動匹配機器人當前位置,無需手動標定機器人位姿;同時默認3D地圖存于機器人端,RViz需點擊DownloadMap從機器人端下載并顯示地圖。3D地圖同步在遠程控制機器人時,確保網絡連接穩定,通過下載并顯示3D地圖,使用RViz工具可指定目標點;同時機器人將自動規劃路徑并導航至指定目標點,實現精準控制與自主導航功能。遠程控制機器人RTAB導航感謝您的觀看與聆聽第13章
語音功能介紹Contents01.語音識別框架02.TTS文字轉語音03.配置語音識別功能包04.語音識別功能包05.總結與展望01語音識別框架麥克風陣列麥克風陣列是聲場采樣系統,關鍵組件為多個聲學傳感器。作用包括聲源定位、噪聲抑制、信號提取與分離,提升語音交互體驗。聲源定位利用麥克風陣列計算聲源距離陣列的角度,基于TDOA實現對目標聲源的跟蹤。精準定位,助力高效語音交互與識別。信號提取與分離在期望方向上形成一個波束,僅拾取波束內的信號,從而達到同時提取聲源和抑制噪聲的目的。清晰拾音,降噪無憂。硬件介紹燈光控制平臺支持設置主麥編號,并具備燈光點亮和關閉功能。操作簡便,提升教室氛圍與教學質量。智能管理,讓教學更輕松。音頻獲取機器人教學平臺通過麥克風陣列獲取原始和降噪音頻,并獲取喚醒角度和主麥編號。設置靈活,滿足多樣化教學場景。教學平臺麥克風教學平臺采用平面式麥克風陣列,含6個麥克風,實現360度等效拾音,喚醒分辨率達1度。配置豐富,滿足教學需求?;祉懭コ溈孙L陣列配合深度神經網絡,有效去除混響,提升語音交互真實感與清晰度。技術革新,讓聲音更加自然悅耳。硬件介紹語音識別流程根據識別系統的類型選擇能夠滿足要求的一種識別方法,并分析出這種識別所需的語音特征參數,作為標準模式存儲起來。語音特征參數在專家知識庫中進行判決,最佳匹配的參考模板即為識別結果。智能高效,精準識別,讓語音交互更加順暢。專家知識庫判決選擇要語音特征參數,將這些特征參數的時間序列構成測試模板,再將其與已存在的參考模板逐一比較,并進行測度估計。特征參數識別02TTS文字轉語音03授權信息創建應用成功后,點擊語音合成界面,記錄下所創建應用的APPID、APISecret以及APIKey三個信息。01注冊訊飛賬號打開訊飛官網,注冊并登錄訊飛開放平臺賬號,進入語音合成界面。02創建應用在語音合成界面上,輸入自定義應用信息,完成應用創建,并記錄APPID、APISecret和APIKey。獲取訊飛授權ID在xtark_audio.yaml文件中,根據實際需求調整音頻相關參數,如采樣率、比特深度等,確保與語音合成API兼容。配置完成后,保存對xtark_audio.yaml文件的修改,并確保文件路徑和參數設置無誤,隨后退出VIM編輯器。將APPID,APIKey與APISecret參數引號中的值替換為用戶所創建的語音合成應用的APPID,APIKey與APISecret值。通過SSH遠程連接到機器人,切換到xtark_audio/config/路徑下,利用VIM編輯器打開xtark_audio.yaml文件。保存并退出替換授權信息配置音頻參數配置APPID配置xtark_audio功能包語音合成功能語音合成功能支持中文與英文,可以直接發布中文語句,機器人即可朗讀中文語句,實現多種語言的語音合成與播放。啟動語音合成通過SSH連接到機器人,啟動語音合成launch啟動文件,即輸入命令$roslaunchxtark_audioxtark_tts.launch。查看話題列表新建一個終端,輸入命令查看當前話題列表與話題消息類型,找到/speak話題及其消息類型std_msgs/String。發布語音數據在/speak話題上發布字符串類型數據,機器人即可合成相應語音并播放。例如直接用命令行發布‘Hello,world’字符串。運行xtark_audio功能包03配置語音識別功能包替換為離線資源:刪除機器人默認離線語音資源,將訊飛SDK中的離線語音資源拷貝至機器人。確保語音資源與APPID匹配,提升識別準確性。下載離線SDK:在訊飛開放平臺,找到已創建的應用,下載離線命令詞識別的linuxSDK。下載完成后,得到一個壓縮包,解壓得到資源文件。下載SDK替換資源替換APPID:用VIM編輯器打開機器人存放APPID的文件,將APPID修改為自己在訊飛開放平臺創建的應用APPID,確保語音識別的準確性。替換為自定義資源:將機器人中的離線語音資源和ID替換為自定義資源。這涉及刪除默認資源,并拷貝下載的語音資源至指定路徑。配置語音參數語音參數說明:語音參數包括喚醒詞、錄音時長、置信度閾值等,這些參數可以在config文件夾中的yaml文件中進行調整,以滿足不同需求。用戶參數配置:用戶參數文件位于語音功能包的config
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- JJF 2428-2026食品基體標準物質研制(生產)通用技術要求
- GB/T 7597-2026電力用油取樣方法
- 小型工程安全指南講解
- 國外醫院宣教經驗
- 骨科患者康復指導
- 小學衛生健康宣教
- 鉆孔機司機達標競賽考核試卷含答案
- 津優力健康產品宣
- 顏料生產工常識競賽考核試卷含答案
- 混合集成電路裝調工崗前合規化考核試卷含答案
- 村級報賬員業務培訓課件
- 人工智能賦能鄉村治理的實踐邏輯、現實困境與優化路徑
- 2026年區分觀點與事實基礎練習含答案
- 光模塊行業2026年市場需求與技術演進趨勢分析
- 2026年金融行業風險管理部主管面試題集及解答
- 服裝質檢培訓課件模板
- 小學高年級學生習作修改的現狀、困境與突破路徑研究
- 2026公務員考試時事政治題與答案
- 全國內部審計數智化轉型發展研究報告
- 日語課題 申報書范文
- 數字孿生技術在土木工程中的應用與施工全流程精準管控研究畢業論文答辯匯報
評論
0/150
提交評論