機器人作業系統ROS



為了令空拍機可以自己執行飛行動作,所以採用了ROS的方式進行指令的管理,以方便之後的自動化控制。
開發穩定且通用的機器人軟體是一件困難的事情,而ROS主要希望簡化此一開發過程,讓各個機器人軟體可以快速整合。

ROS介紹

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

ROS的概念

Computation Graph Level(計算圖)

Computation Graph Level(計算圖)就是用ROS的P2P(peer-to-peer網絡傳輸協議)網絡集中處理所有的數據。基本的Computation Graph的概念包括Node, Master, Parameter Server,messages, services, topics, 和bags, 以上所有的這些都以不同的方式給Graph傳輸數據。

  1. 節點(node):
    節點是執行計算的進程。 ROS被設計為在細粒度上模塊化。機器人控制系統通常包含許多節點。例如,一個節點控制激光測距儀,一個節點控制車輪電動機,一個節點執行定位,一個節點執行路徑規劃,一個節點提供系統的圖形視圖,依此類推。 ROS節點是使用ROS客戶端庫(例如roscpp或rospy)編寫的。

  2. Master:
    ROS Master提供名稱註冊和對計算圖其餘部分的查找。沒有主服務器,節點將無法彼此查找,交換消息或調用服務。

  3. Parameter Server:
    允許通過密鑰將數據存儲在中央位置。

  4. 訊息(message):
    節點之間通過傳遞消息進行通信。每一個訊息都有一個固定的資料結構。ROS支援的原始資料結構有整型、浮點型、布林型、字串、字典、列表。消息可以包含任意嵌套的結構和數組(非常類似於C結構)。

  5. 話題(topic):
    topic:消息通過具有發布/訂閱語義的傳輸系統進行路由。節點通過將消息發佈到給定主題來發出消息。主題是用於Tag消息內容的名稱。對某種類型的數據對應的節點將訂閱適當的主題。單個主題可能有多個發佈者和訂閱者,並且單個節點可以發佈或訂閱多個主題。通常,發佈者和訂閱者不了解彼此的存在。從邏輯上講,可以將topic視為強類型的消息總線。每條總線都有一個名稱,只要它們是正確的類型,任何人都可以連接到該總線以發送或接收消息。

  6. 服務(service):
    發佈/訂閱模型是一種非常靈活的通信範例,但是其多對多單向傳輸不適用於 request/reply ,而這在分佈式系統中通常是必需的。request/reply 是通過服務完成的,服務由一對消息結構定義:一個用於請求,一個用於回复。提供節點使用名稱提供服務,client端通過發送請求消息並等待答復來使用該服務。

  7. 包(bag):
    用於記錄系統執行過程中產生的話題資料。

詳細的圖像這樣

ROS安裝


上次有說到會用Xenial (Ubuntu 16.04) 的作業系統
而在ROS Kinetic 也就只支援Wily (Ubuntu 15.10), Xenial (Ubuntu 16.04) and Jessie (Debian 8) for debian packages
假設要用到mac或者windows 的安裝方式也就有點不一樣,在這不多作說明。

1.sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
2. sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
3. sudo apt-get update
4. sudo apt-get install ros-kinetic-desktop-full
5. sudo rosdep init
6. rosdep update
7. echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
8. source ~/.bashrc
9. sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential

Turtlesim的安裝


安裝完成後我們就可以用小烏龜來試玩一下

sudo apt-get install ros-$(rosversion -d)-turtlesim

roscore
rosrun turtlesim turtlesim_node

再來確認一下烏龜的node和topic

rosnode list

rostopic list

然後可以用一些指令對小烏龜進行控制 上下左右的移動

rosrun turtlesim turtle_teleop_key

都沒問題之後就可以弄一個發佈者和訂閱者來自動跑了

1.首先建立一個workspace

sudo apt-get install build-essential python-rosdep python-catkin-tools
mkdir -p ~/catkin_ws/src && cd ~/catkin_ws/src
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
cd ~/catkin_ws/
catkin_make
. ~/catkin_ws/devel/setup.bash
cd ~/catkin_ws/src/beginner_tutorials
mkdir scripts
cd scripts

2.建立發佈者

3.建立訂閱者

結果我們就可以令烏龜自己劃圓

主要參考

http://wiki.ros.org/ROS/Concepts

#ROS #drone #TurtleSim







你可能感興趣的文章

JAVA筆記 _ OOP的三大特性

JAVA筆記 _ OOP的三大特性

資訊安全:SQL Injection & CSRF

資訊安全:SQL Injection & CSRF

Javascript ES5, ES6 物件導向、原型鍊、this

Javascript ES5, ES6 物件導向、原型鍊、this






留言討論