ROS機器人操做系統在機器人應用領域很流行,依託代碼開源和模塊間協做等特性,給機器人開發者帶來了很大的方便。咱們的機器人「miiboo」中的大部分程序也採用ROS進行開發,因此本文就重點對ROS基礎知識進行詳細的講解,給不熟悉ROS的朋友起到一個拋磚引玉的做用。本章節主要內容:html
1.ROS是什麼node
2.ROS系統總體架構python
3.在ubuntu16.04中安裝ROS kineticnginx
5.編寫簡單的消息發佈器和訂閱器github
6.編寫簡單的service和clientdjango
8.理解roslaunch在大型項目中的做用ubuntu
9.熟練使用rvizwindows
(圖1)ROS的圖標
ROS是一個適用於機器人的開源的元操做系統。其實它並非一個真正的操做系統,其底層的任務調度、編譯、尋址等任務仍是由Linux操做系統完成,也就是說ROS其實是運行在Linux上的次級操做系統。可是ROS提供了操做系統應用的各類服務(如:硬件抽象、底層設備控制、經常使用函數實現、進程間消息傳遞、軟件包管理等),也提供了用於獲取、編譯、跨平臺運行代碼的工具和函數。ROS主要採用鬆耦合點對點進程網絡通訊,目前主要仍是支持Ubuntu系統,windows和Mac OS目前支持的還很差,因此推薦在Ubuntu系統上安裝使用ROS。
(圖2)ROS的特性
總結起來就是,使用ROS可以方便迅速的搭建機器人原型。ROS使用了BSD許可證,這是一個很寬鬆的開放許可證,容許在商業和閉源產品中使用,這一點對開發產品的創業公司很重要。ROS當前的代碼統計量,總行數超過1400萬,做者超過2477名。代碼語言以C++爲主,63.98%的代碼是用C++編寫的,排名第二的是python,佔13.57%,能夠說ROS基本上都是使用這兩種語言,來實現大部分的功能。
這裏主要從四個方面來解讀ROS的結構,設計思想、核心概念、核心模塊、核心工具。
ROS的設計思路主要是分佈式架構,將機器人的功能和軟件作成一個個節點,而後每一個節點經過topic進行溝通,這些節點能夠部署在同一臺機器上,也能夠部署在不一樣機器上,還能夠部署在互聯網上。
ROS的核心概念主要是節點和用於節點間通訊的話題與服務。管理器Master管理節點與話題之間通訊的過程,而且還提供一個參數服務用於全局參數的配置。ROS經過功能包集stack和功能包package來組織代碼。
ROS的核心模塊包括:通訊結構基礎、機器人特性功能、工具集。通訊結構基礎主要是消息傳遞、記錄回放消息、遠程過程調用、分佈式參數系統;機器人特性功能主要是標準機器人消息、機器人幾何庫、機器人描述語言、搶佔式遠程過程調用、診斷、位置估計、定位導航;工具集主要是命令式工具、可視化工具、圖形化接口。
ROS核心工具很豐富,ROS經常使用命令工具是rostopic、rosservice、rosnode、rosparam、rosmsg、rossrv、roswtf;ROS經常使用可視化工具是rqt、rviz;ROS用於存儲與回放數據的工具rosbag;ROS的log系統記錄軟件運行的相關信息;ROS還擁有強大的第三方工具支持:三維仿真環境Gazebo、計算機視覺庫OpenCV、點雲庫PCL、機械臂控制庫MoveIt、工業應用庫Industrial、機器人編程工具箱MRPT、實時控制庫Orocos。
官網: www.ros.org
源碼: github.com
Wiki: wiki.ros.org
問答: answers.ros.org
------SLAM+語音機器人DIY系列【目錄】快速導覽------
第1章:Linux基礎
第2章:ROS入門
第3章:感知與大腦
第4章:差分底盤設計
第5章:樹莓派3開發環境搭建
第6章:SLAM建圖與自主避障導航
2.google-cartographer機器人SLAM建圖
第7章:語音交互與天然語言處理
第8章:高階拓展
2.centos7下部署Django(nginx+uwsgi+django+python3)
----------------文章將持續更新,敬請關注-----------------
若是你們對博文的相關類容感興趣,或有什麼技術疑問,歡迎加入下面的《SLAM+語音機器人DIY》QQ技術交流羣,一塊兒討論學習^_^
關於咱們:
視頻教程: