日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 技術讓夢想更偉大
[導讀]作者:良知猶存來源:羽林君前言??本來是要寫一篇STM32移植ROS的一個小lib庫,ROS一般都是需要跑在Linux上的,STM32使用就是當成一個ROS通訊的小節(jié)點,但是寫文章時間不夠,所以就簡單做一篇ROS的介紹文章,分享給嵌入式的小伙伴們。ROS現(xiàn)在在機器人領域會有比較多...

作者:良知猶存

來源:羽林君



前言



? ? 本來是要寫一篇STM32移植ROS的一個小lib庫,ROS一般都是需要跑在Linux上的,STM32使用就是當成一個ROS通訊的小節(jié)點,但是寫文章時間不夠,所以就簡單做一篇ROS的介紹文章,分享給嵌入式的小伙伴們。ROS現(xiàn)在在機器人領域會有比較多的應用,學習的人群也逐漸增多,甚至會有專門的ROS崗位進行招聘,并且普遍工資要比一般的嵌入式開發(fā)高一些。今天給大家分享一下,希望大家可以一起學習進步哈。




ROS是什么


?????ROS(機器人操作系統(tǒng),Robot Operating System),是專為機器人軟件開發(fā)所設計出來的一套電腦操作系統(tǒng)架構。它是一個開源的元級操作系統(tǒng)(后操作系統(tǒng)),提供類似于操作系統(tǒng)的服務,包括硬件抽象描述、底層驅(qū)動程序管理、共用功能的執(zhí)行、程序間消息傳遞、程序發(fā)行包管理,它也提供一些工具和庫用于獲取、建立、編寫和執(zhí)行多機融合的程序。


ROS的運行架構是一種使用ROS通信模塊實現(xiàn)模塊間P2P的松耦合的網(wǎng)絡連接的處理架構,它執(zhí)行若干種類型的通訊,包括:

  1. 1.基于服務的同步RPC(遠程過程調(diào)用)通訊;

  2. 2.基于Topic的異步數(shù)據(jù)流通訊,還有參數(shù)服務器上的數(shù)據(jù)存儲。


發(fā)展目標

??? ROS的首要設計目標是在機器人研發(fā)領域提高代碼復用率。ROS是一種分布式處理框架(又名Nodes)。這使可執(zhí)行文件能被單獨設計,并且在運行時松散耦合。這些過程可以封裝到數(shù)據(jù)包(Packages)和堆棧(Stacks)中,以便于共享和分發(fā)。ROS還支持代碼庫的聯(lián)合系統(tǒng)。使得協(xié)作亦能被分發(fā)。這種從文件系統(tǒng)級別到社區(qū)一級的設計讓獨立地決定發(fā)展和實施工作成為可能。上述所有功能都能由ROS的基礎工具實現(xiàn)。

為了實現(xiàn)“共享與協(xié)作”這一首要目標,人們制訂了ROS架構中的其他支援性目標:

  • “輕便”:ROS是設計得盡可能方便簡易。您不必替換主框架與系統(tǒng),因為ROS編寫的代碼可以用于其他機器人軟件框架中。毫無疑問的,ROS更易于集成與其他機器人軟件框架。事實上ROS已完成與OpenRAVE、Orocos和Player的整合。

  • ROS-agnostic庫:【agnostic:不可知論】建議的開發(fā)模型是使用clear的函數(shù)接口書寫ROS-agnostic庫。

  • 語言獨立性:ROS框架很容易在任何編程語言中執(zhí)行。我們已經(jīng)能在Python和C 中順利運行,同時添加有Lisp、Octave和Java語言庫。

  • 測試簡單:ROS有一個內(nèi)建的單元/組合集測試框架,稱為“rostest”。這使得集成調(diào)試和分解調(diào)試很容易。

  • 擴展性:ROS適合于大型實時系統(tǒng)與大型的系統(tǒng)開發(fā)項目



?????在ROS的計算圖中,ROS的Master以一個name service的方式工作。它給ROS的節(jié)點存儲了topics和service的注冊信息。Nodes 與Master通信從而報告它們的注冊信息。當這些節(jié)點與master通信的時候,它們可以接收關于其他以注冊節(jié)點的信息并且建立與其它以注冊節(jié)點之間的聯(lián)系。當這些注冊信息改變時Master也會回饋這些節(jié)點,同時允許節(jié)點動態(tài)創(chuàng)建與新節(jié)點之間的連接。

???

?????節(jié)點之間的連接是直接的;Master僅僅提供了查詢信息,就像一個DNS服務器。節(jié)點訂閱一個topic將會要求建立一個與發(fā)布該topics的節(jié)點的連接,并且將會在同意連接協(xié)議的基礎上建立該連接。ROS里面使用最廣的連接協(xié)議是TCPROS,這個協(xié)議使用標準的TCP/IP 接口。

????

????這樣的架構允許解耦操作(decoupled operation),通過這種方式大型或是更為復雜的系統(tǒng)得以建立,其中names方式是一種行之有效的手段。names方式在ROS系統(tǒng)中扮演極為重要的角色:topics, services, and parameters 都有各自的names。每一個ROS客戶端庫都支持重命名,這等同于,每一個編譯成功的程序能夠以另一種形似【名字】運行。


??? ROS通信接口正在成為機器人軟件互操作的事實標準,也就是 說絕大部分最新的硬件驅(qū)動和最前沿的算法實現(xiàn)都可以在 ROS中找到。例如,在ROS的官方網(wǎng)頁 上有著大量的開源軟 件庫,這些軟件使用ROS通用接口,從而避免為了集成它們而 重新開發(fā)新的接口程序





ROS可以做什么




????當我們希望稍微提高一下機器人復雜度的時候,就會發(fā)現(xiàn)另一個需要考慮的問題,進程間通信。在我們用Windows RTX的時候,進程間通信使用RTX提供的shared memory,不過都是比較慢的圖像處理進程向shared memory中寫數(shù)據(jù),決策和運動控制進程讀數(shù)據(jù)。shared memory顯然并不是很好的通信方式,這里不再多加討論。ROS則使用了一個很好的通信架構,并且是ROS整個框架的一個基礎(不論是對于ROS中的topic,service,plugin,actionlib等基礎概念還是rviz,navigation package等功能包。

???

??? ROS為開發(fā)者提供了一系列非常有用的工具,可以大大提高我們開發(fā)的效率。

rqt_plot:可以實時繪制當前任意Topic的數(shù)值曲線;


rqt_graph:可以繪制出各節(jié)點之間的連接狀態(tài),和正在使用的Topic等;


TF:TF是Transform的簡寫,利用它,我們可以實時知道各連桿坐標系的位姿,也可以求出兩個坐標系的相對位置。


Rviz:超強大的3D可視化工具,可以顯示機器人模型、3D電影、各種文字圖標、也可以很方便二次開發(fā);

?

???除了ROS本身之外,世界上已經(jīng)有很多非常優(yōu)秀的機器人開源項目,但是ROS正逐漸將它們一一囊括在自己的范疇里,所以你可以在ROS里面很容易的使用這些開源項目:(這部分項目介紹文字摘自公眾號:【Nao】 一位交大的算法博士的公眾號


OROCOS:這個開源項目主要側重于機器人底層控制器的設計,包括用于計算串聯(lián)機械臂運動學數(shù)值解的KDL、貝葉斯濾波、實時控制等功能。


OpenRave:這是在ROS之前最多人用來做運動規(guī)劃的平臺,ROS已經(jīng)將其中的ikfast(計算串聯(lián)機械臂運動學解析解)等功能吸收。


Player:一款優(yōu)秀的二維仿真平臺,可以用于平面移動機器人的仿真,現(xiàn)在在ROS里可以直接使用。


OpenCV:大名鼎鼎的機器視覺開源項目,ROS提供了cv_bridge,可以將OpenCV的圖片與ROS的圖片格式相互轉換。


OMPL:現(xiàn)在最著名的運動規(guī)劃開源項目,已經(jīng)成了MoveIt的一部分。

Visp:一個開源視覺伺服項目,已經(jīng)跟ROS完美整合。

Gazebo:一款優(yōu)秀的開源仿真平臺,可以實現(xiàn)動力學仿真、傳感器仿真等,也已被ROS吸收。


當然,除了吸收別的優(yōu)秀開源項目,ROS自己也發(fā)展出許多非常優(yōu)秀的項目和庫。

ORK:一個物體識別與位姿估計開源庫,包含LineMod等算法,但實際使用效果還不是太理想。下圖是LineMod識別效果



PCL:一個開源點云處理庫,原本是從ROS中發(fā)展起來的,后來由于太受歡迎,為了讓非ROS用戶也能用,就單獨立了一個PCL的項目。

Gmapping:這其實是在OpenSlam項目繼承過來的(后來發(fā)展和改動較大),利用gmapping可以實現(xiàn)laser-based SLAM,快速建立室內(nèi)二維地圖,下圖就是gmapping建立二維地圖


Localization基于擴展卡爾曼濾波(EKF)和無跡卡爾曼濾波(UKF)的機器人定位算法,可以融合各種傳感器的定位信息,獲得較為準確的定位效果。

robot_localization示意圖


Navigation:基于Dijkstra、A*算法(全局規(guī)劃器)和動態(tài)窗口法DWA(局部規(guī)劃器)的移動機器人路徑規(guī)劃模塊,可以在二維地圖上實現(xiàn)機器人導航。


MoveIt:這個是專注于移動機械臂運動規(guī)劃的模塊,運動規(guī)劃.


當然,除了這些最先進算法外,ROS還有各種機器人、傳感器驅(qū)動等內(nèi)容。




ROS怎么學



???Nao作者

????首先,ROS版本定期更新、主要模塊有專人維護、問答區(qū)活躍、各mail lists也非?;钴S、開發(fā)者非常熱衷交流分享。如果深入到ROS社區(qū),可以學到很多東西。

??? ROS的基本架構和開發(fā)方式。我個人是強烈推薦直接看ROS官網(wǎng)上的教程ROS/Tutorials的Beginner Level(多看幾遍),同時充分使用ROS的問答社區(qū)ROS Answers與各模塊的Mail Lists,很多基礎問題可能前人都遇到過。


????其次,在了解ROS的基本架構與開發(fā)方式后,就可以有針對性地看自己所關心的部分了。如做移動機器人的同學就去看Navigation教程;做物體識別的就去看ORK教程;做運動規(guī)劃的就去看MoveIt教程。這一步最好能跟有實際機器人練手(如果沒有的話,就用gazebo仿真)。由于一些模塊的教程不夠清楚(如MoveIt),一定要多練習,甚至是去看部分源碼,先保證自己會用ROS實現(xiàn)一些功能。

????對于ROS與實際機器人的連接,建議仔細看看action(編寫機器人驅(qū)動package)、URDF(機器人描述文件)的教程(或者ros_control)。我為SDA5F機器人編寫了URDF文件,并修改了motoman_driver中的action,使得在ROS環(huán)境中用MoveIt規(guī)劃控制雙臂機器人運動。

????最后,就是進階階段了。我要強調(diào)一句“ROS只是一個工具",你會用ROS做SLAM并不能說明你會做SLAM。對于自己研究的內(nèi)容,必須沉下心去看教材和論文,去理解每種算法背后的原理,知道如何調(diào)整算法參數(shù)、如何改進算法,最終能夠自己編寫某部分代碼,并替換ROS的相應模塊(如自己寫運動學正逆解替代KDL等)。做研究,交流非常重要。如果你改進ROS某一算法后,最好能與package的原作者交流,將自己的修改merge到原項目中,在交流中提高自己與package的水平。當然,如果對算法有疑問,也可以直接咨詢作者,ROS里的貢獻者大都非常愿意分享和交流。

? ?

? ?此外除了一個好的學習平臺,我們還需要一個趁手的使用工具:推薦TurtleBot

? ??

??? TurtleBot可以說是ROS中最為重要的機器人之一,它伴隨ROS一同成長,一直都作為ROS開發(fā)前沿的機器人,幾乎每個版本的ROS測試都會以TurtleBot為主,包括ROS2也率先在TurtleBot上進行了大量測試。


????所以TurtleBot是ROS支持度最好的機器人之一,可以在ROS社區(qū)中獲得大量關于TurtleBot的相關資源,很多功能包都能直接復用到我們自己的移動機器人平臺上,絕對是使用ROS開發(fā)移動機器人的重要資源。并且TurtleBot相關的國內(nèi)支持平臺:創(chuàng)客制造網(wǎng)站也提供了許多詳細資料。

這就是我分享的ROS,最近也有在用ROS以及更加深入的學習ROS,有些資料大家可以添加我微信,我可以分享給大家。此外如果大家有什么更好的思路,也歡迎分享交流哈。

END

本公眾號全部原創(chuàng)干貨已整理成一個目錄,回復[ 資源 ]即可獲得。


更多分享,掃碼關注我



本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅(qū)動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅(qū)動性能的關鍵。

關鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質(zhì)量和效率直接關系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅(qū)動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關鍵字: LED 驅(qū)動電源 開關電源

LED驅(qū)動電源是把電源供應轉換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅(qū)動電源
關閉