SLAM+語音機器人DIY系列:(二)ROS入門——1.ROS是什么


摘要                                          

ROS機器人操作系統在機器人應用領域很流行,依托代碼開源和模塊間協作等特性,給機器人開發者帶來了很大的方便。我們的機器人“miiboo”中的大部分程序也采用ROS進行開發,所以本文就重點對ROS基礎知識進行詳細的講解,給不熟悉ROS的朋友起到一個拋磚引玉的作用。本章節主要內容:

1.ROS是什么

2.ROS系統整體架構

3.在ubuntu16.04中安裝ROS kinetic

4.如何編寫ROS的第一個程序hello_world

5.編寫簡單的消息發布器和訂閱器

6.編寫簡單的service和client

7.理解tf的原理

8.理解roslaunch在大型項目中的作用

9.熟練使用rviz

10.在實際機器人上運行ROS高級功能預覽



1.ROS是什么          

 

(圖1)ROS的圖標

ROS是一個適用於機器人的開源的元操作系統。其實它並不是一個真正的操作系統,其底層的任務調度、編譯、尋址等任務還是由Linux操作系統完成,也就是說ROS實際上是運行在Linux上的次級操作系統。但是ROS提供了操作系統應用的各種服務(如:硬件抽象、底層設備控制、常用函數實現、進程間消息傳遞、軟件包管理等),也提供了用於獲取、編譯、跨平台運行代碼的工具和函數。ROS主要采用松耦合點對點進程網絡通信,目前主要還是支持Ubuntu系統,windows和Mac OS目前支持的還不好,所以推薦在Ubuntu系統上安裝使用ROS。

1.1.ROS的特性               

(圖2ROS的特性

總結起來就是,使用ROS能夠方便迅速的搭建機器人原型。ROS使用了BSD許可證,這是一個很寬松的開放許可證,允許在商業和閉源產品中使用,這一點對開發產品的創業公司很重要。ROS當前的代碼統計量,總行數超過1400萬,作者超過2477名。代碼語言以C++為主,63.98%的代碼是用C++編寫的,排名第二的是python,占13.57%,可以說ROS基本上都是使用這兩種語言,來實現大部分的功能。

1.2.ROS的結構              

這里主要從四個方面來解讀ROS的結構,設計思想、核心概念、核心模塊、核心工具。

ROS的設計思路主要是分布式架構,將機器人的功能和軟件做成一個個節點,然后每個節點通過topic進行溝通,這些節點可以部署在同一台機器上,也可以部署在不同機器上,還可以部署在互聯網上。

ROS的核心概念主要是節點和用於節點間通信的話題與服務。管理器Master管理節點與話題之間通信的過程,並且還提供一個參數服務用於全局參數的配置。ROS通過功能包集stack和功能包package來組織代碼。

ROS的核心模塊包括:通信結構基礎、機器人特性功能、工具集。通信結構基礎主要是消息傳遞、記錄回放消息、遠程過程調用、分布式參數系統;機器人特性功能主要是標准機器人消息、機器人幾何庫、機器人描述語言、搶占式遠程過程調用、診斷、位置估計、定位導航;工具集主要是命令式工具、可視化工具、圖形化接口。

ROS核心工具很豐富,ROS常用命令工具是rostopicrosservicerosnoderosparamrosmsgrossrvroswtfROS常用可視化工具是rqtrvizROS用於存儲與回放數據的工具rosbagROSlog系統記錄軟件運行的相關信息;ROS還擁有強大的第三方工具支持:三維仿真環境Gazebo、計算機視覺庫OpenCV、點雲庫PCL、機械臂控制庫MoveIt、工業應用庫Industrial、機器人編程工具箱MRPT、實時控制庫Orocos

1.3.ROS的學習資源          

官網:  www.ros.org

源碼:  github.com

Wiki:  wiki.ros.org

問答:  answers.ros.org

后記                                      

------SLAM+語音機器人DIY系列【目錄】快速導覽------

第1章:Linux基礎

1.Linux簡介

2.安裝Linux發行版ubuntu系統

3.Linux命令行基礎操作

第2章:ROS入門

1.ROS是什么

2.ROS系統整體架構

3.在ubuntu16.04中安裝ROS kinetic

4.如何編寫ROS的第一個程序hello_world

5.編寫簡單的消息發布器和訂閱器

6.編寫簡單的service和client

7.理解tf的原理

8.理解roslaunch在大型項目中的作用

9.熟練使用rviz

10.在實際機器人上運行ROS高級功能預覽

第3章:感知與大腦

1.ydlidar-x4激光雷達

2.帶自校准九軸數據融合IMU慣性傳感器

3.輪式里程計與運動控制

4.音響麥克風與攝像頭

5.機器人大腦嵌入式主板性能對比

6.做一個能走路和對話的機器人

第4章:差分底盤設計

1.stm32主控硬件設計

2.stm32主控軟件設計

3.底盤通信協議

4.底盤ROS驅動開發

5.底盤PID控制參數整定

6.底盤里程計標

第5章:樹莓派3開發環境搭建

1.安裝系統ubuntu_mate_16.04

2.安裝ros-kinetic

3.裝機后一些實用軟件安裝和系統設置

4.PC端與robot端ROS網絡通信

5.Android手機端與robot端ROS網絡通信

6.樹莓派USB與tty串口號綁定

7.開機自啟動ROS節點

第6章:SLAM建圖與自主避障導航

1.在機器人上使用傳感器

2.google-cartographer機器人SLAM建圖

3.ros-navigation機器人自主避障導航

4.多目標點導航及任務調度

5.機器人巡航與現場監控

第7章:語音交互與自然語言處理

1.語音交互相關技術

2.機器人語音交互實現

3.自然語言處理雲計算引擎

第8章:高階拓展

1.miiboo機器人安卓手機APP開發

2.centos7下部署Django(nginx+uwsgi+django+python3)

----------------文章將持續更新,敬請關注-----------------

 

如果大家對博文的相關類容感興趣,或有什么技術疑問,歡迎加入下面的《SLAM+語音機器人DIY》QQ技術交流群,一起討論學習^_^

 

關於我們:

視頻教程:

 

https://www.bilibili.com/video/av61448040

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM