日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

由浅到深理解ROS(1)

發布時間:2023/12/10 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 由浅到深理解ROS(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ROS機器人操作系統?(?Robot?Operating System?或簡稱?ROS),可以幫助提高機器人軟件的開發效率。ROS能夠提供類似傳統操作系統的諸多功能,如硬件抽象、底層設備控制、常用功能實現、進程間消息傳遞和程序包管理等。此外,它還提供相關工具和庫,用于獲取、編譯、編輯代碼以及在多個計算機之間運行程序完成分布式計算。結合筆者對ROS的理解,想與大家一起討論,共同把ROS理解的更準確,一起進步。

?

對ROS的誤解:

1.ROS不是一種編程語言。實際上,ROS的主要代碼由C++語言編寫,客戶端庫的編寫還可以使用Python、Java和Lisp等其他多種語言編寫。據筆者開發經驗而談,ROS只不過用c++基本語法進行了封裝,制定了統一的標準,比如導航所用的速度和角度,ROS封裝成了自己的結構體叫msg,如果你裝了ROS,你可以用命令rosmsg show geometry_msg/Twist 查看到格式:

geometry_msgs/Vector3 linear

? float64 x

? float64 y

? float64 z

geometry_msgs/Vector3 angular

? float64 x

? float64 y

? float64 z

可以看到都是c++基本語法,只是提供一個通用的數據類型以便促進整個系統的互操作性。geometry_msgs是存放結構體(或組合成的新類型比較準確)的文件夾的名字(ROS里面叫包package),結構體(新類型)的名字Twist(ROS里面叫消息msg),這個包下還有很多類型http://wiki.ros.org/geometry_msgs

?

2.ROS不僅是一個函數庫(比如在ROS的導航中全局路徑規劃(global planner)首先會通過全局路徑規劃,計算出機器人到目標位置的全局路線。這一功能是navfn這個包實現的。navfn通過Dijkstra(/?d??kstra/.戴克斯特拉 和 迪科斯徹都可以)最優路徑的算法,計costmap上的最小花費路徑,作為機器人的全局路線。如果你想做global planner,直接調用這個包就行了),除包含客戶(Client Libraries)外還包含一個中心服務器(Central Server)、一系列命令行工具、圖形化界面工具以及編譯環境。

?

3.ROS不是集成開發環境。雖然ROS沒有規定軟件開發環境,但幾乎所有的主流IDE8都可用于基于ROS的軟件開發。此外,我們還可以根據個人喜好,使用普通的文本編輯器和命令行來完成相應的開發,而無需任何IDE。

?

4.ROS也不是一個完全意義上的操作系統,是一個軟件平臺能夠提供類似傳統操作系統的諸多功能而已,Linux ubuntu操作系統對它支持良好,我認為最初是基于Linux ubuntu操作系開發的,選擇ubuntu其中一個重要的原因我認為ubuntu有絢麗的圖形化界面。雖然編譯ROS程序時用rosbuild或catkin_make,本質上還是基于cmake的,只是寫了個shell腳本把cmake的命令集合一下,運行程序雖然用rosrun命令,本質和運行./bin(編譯生成的二進制文件)一樣,它也只不過是一個shell腳本,能夠理解ROS的文件組織結構,知道到哪里能找到與給定包名稱對應的可執行文件。一旦它找到你要的程序,rosrun就會正常啟動節點。舉個例子就好理解了:你要啟動turtlesim_node節點(負責創建turtlesim窗口和模擬海龜的運動)可以運行?rosrun turtlesim turtlesim_node ,但是你完全可以這么啟動:/opt/ros/indigo/lib/turtlesim/turtlesim_node ?

?

發行版本(Distributions)

ROS的主要版本稱為發行版,其版本號以順序字母作為版本名的首字母來命名(這種方式與其他大型工程的版本命名方式類似,如Ubuntu、Android)。ROS的版本包括hydro、groovy、feurte、electric、diamondback、C Turtle、box turtle、indigo、jade、kinetic。

總結

以上是生活随笔為你收集整理的由浅到深理解ROS(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。