---
tags: ROS, robotic operating system
---
# 機器人作業系統概述
ROS(英語:Robot Operating System,一般譯為機器人作業系統),是專為機器人軟體開發所設計出來的一套電腦作業系統架構。它是一個開源的元級作業系統(後作業系統),提供類似於作業系統的服務,包括硬體抽象描述、底層驅動程序管理、共用功能的執行、程序間消息傳遞、程序發行包管理,它也提供一些工具和庫用於獲取、建立、編寫和執行多機融合的程序。
## 簡單的應用
應該很多人會好奇這個是在做什麼的。簡單來說,就是拿來寫硬體的,但是並非Verilog那種直接性的操作硬體,而是處理更高階的事情,就是機器人的作業系統,可以想像成電腦中的作業系統,驅動整個電腦的零件。
紅外線系統、無線電系統......,大多數的新型科技都會有這個系統的支援。
## Ros Master
運作Ros必定要先開啟Ros Master,而簡單的Ros Network如下:

---
### 內容
• ROS Node
下一篇實際操作後就會感受到,一個node就是一個程式文件
• ROS Publisher
有的node是身為publisher,會發出訊息到topic
• ROS Subscriber
而有的node則身為subscriber,會從已訂閱的topic接受訊息
• ROS Topics
就像介質、平台般的存在,ex:布告欄
• ROS Message
扮演'語言'的腳色,ex:發表者寫'英文'公布在布告欄
• ROS Service
傳送訊息後,需要靠'等待處理'的這種Service,使得通訊成為'同步',其成分就是request和response
• ROS Action
但有些會等太久而被中斷,這時就需要搭配Topics用的Action
## ROS Graph
ROS Graph,用來視覺化目前ROS網路的一個工具
簡單的案例如下:

---
## ROS 實用功能
### ros bag
能夠紀錄、播放ros網路中的資訊流
這大概是做這系統最常用的指令之一
簡單的示例如下:

### rviz
能夠將ros 網路中的資訊視覺化的工具(本地端)
這是做自走車之類的作品最常用的工具之一
示意如下:

### webviz
能夠將ros 網路中的資訊視覺化的工具(網頁端)
這是網頁端的視覺化工具
當然還要裝很多的package,像是ros bridge......
示意如下:

### ros3djs
能夠將ros 網路中的資訊視覺化的工具(網頁端)
這是網頁端的視覺化工具,因為上面是官方的,功能有限制,若想要自行設計頁面、功能,只能自己寫
當然還要裝很多的package,像是ros bridge......
示意如下:

# 安裝
ros 在安裝上還滿輕鬆的
只是不同的linux版本會有不同的ros系統,像我之前是用ros kinect
[官方網站](http://wiki.ros.org/)
###### tags: `Neural Network` `Deep Learning`