為了令空拍機可以自己執行飛行動作,所以採用了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傳輸數據。
節點(node):
節點是執行計算的進程。 ROS被設計為在細粒度上模塊化。機器人控制系統通常包含許多節點。例如,一個節點控制激光測距儀,一個節點控制車輪電動機,一個節點執行定位,一個節點執行路徑規劃,一個節點提供系統的圖形視圖,依此類推。 ROS節點是使用ROS客戶端庫(例如roscpp或rospy)編寫的。Master:
ROS Master提供名稱註冊和對計算圖其餘部分的查找。沒有主服務器,節點將無法彼此查找,交換消息或調用服務。Parameter Server:
允許通過密鑰將數據存儲在中央位置。訊息(message):
節點之間通過傳遞消息進行通信。每一個訊息都有一個固定的資料結構。ROS支援的原始資料結構有整型、浮點型、布林型、字串、字典、列表。消息可以包含任意嵌套的結構和數組(非常類似於C結構)。話題(topic):
topic:消息通過具有發布/訂閱語義的傳輸系統進行路由。節點通過將消息發佈到給定主題來發出消息。主題是用於Tag消息內容的名稱。對某種類型的數據對應的節點將訂閱適當的主題。單個主題可能有多個發佈者和訂閱者,並且單個節點可以發佈或訂閱多個主題。通常,發佈者和訂閱者不了解彼此的存在。從邏輯上講,可以將topic視為強類型的消息總線。每條總線都有一個名稱,只要它們是正確的類型,任何人都可以連接到該總線以發送或接收消息。服務(service):
發佈/訂閱模型是一種非常靈活的通信範例,但是其多對多單向傳輸不適用於 request/reply ,而這在分佈式系統中通常是必需的。request/reply 是通過服務完成的,服務由一對消息結構定義:一個用於請求,一個用於回复。提供節點使用名稱提供服務,client端通過發送請求消息並等待答復來使用該服務。包(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.建立訂閱者
結果我們就可以令烏龜自己劃圓