ROS搬運 筆記1

2021-10-08 14:19:28 字數 3275 閱讀 3001

圖概念概述

• nodes:節點,乙個節點即為乙個可執行檔案,它可以通過ros與其它節點進行通訊。

• messages:訊息,訊息是一種ros資料型別,用於訂閱或發布到乙個話題。

• topics:話題,節點可以發布訊息到話題,也可以訂閱話題以接收訊息。

• master:節點管理器,ros名稱服務 (比如幫助節點找到彼此)。

• rosout: ros中相當於stdout/stderr。

• roscore: 主機+ rosout + 引數伺服器 (引數伺服器會在後面介紹)。

1 乙個節點其實只不過是ros程式包中的乙個可執行檔案。ros節點可以使用ros客戶庫與其他節點通訊。節點可以發布或接收乙個話題。節點也可以提供或使用某種服務。

(節點是ros中非常重要的乙個概念,為了幫助初學者理解這個概念,這裡舉乙個通俗的例子:

例如,咱們有乙個機械人,和乙個遙控器,那麼這個機械人和遙控器開始工作後,就是兩個節點。遙控器起到了下達指 令的作用;機械人負責監聽遙控器下達的指令,完成相應動作。從這裡我們可以看出,節點是乙個能執行特定工作任 務的工作單元,並且能夠相互通訊,從而實現乙個機械人系統整體的功能。在這裡我們把遙控器和機械人簡單定義為兩個節點,實際上在機械人中根據控制器、感測器、執行機構等不同組成模組,還可以將其進一步細分為更多的節點,這個是根據使用者編寫的程式來定義的。)

2 ros客戶端庫允許使用不同程式語言編寫的節點之間互相通訊:

• rospy = python 客戶端庫

• roscpp = c++ 客戶端庫

3 roscore 是你在執行所有ros程式前首先要執行的命令。rosnode 顯示當前執行的ros節點資訊。rosrun 允許你使用包名直接執行乙個包內的節點(而不需要知道這個包的路徑)。

到rosrun turtlesim終端並使用ctrl c關閉 turtlesim 視窗停止執行節點 。

4 本節所涉及的內容:

• roscore = ros+core : master (provides name service for ros) + rosout

(stdout/stderr) + parameter server (parameter server will be introduced

later)

• rosnode = ros+node : ros tool to get information about a node.

• rosrun = ros+run : runs a node from a given package.

rqt_graph能夠建立乙個顯示當前系統運**況的動態圖形。rqt_graph是rqt程式包中的一部分

rosrun rqt_graph rqt_graph

rostopic echo可以顯示在某個話題上發布的資料:rostopic echo [topic]

rostopic list能夠列出所有當前訂閱和發布的話題。檢視list子命令需要的引數,在乙個新終端中執行:rostopic list -h

rostopic list -v 這會顯示出有關所發布和訂閱的話題及其型別的詳細資訊。

rostopic type 命令用來檢視所發布話題的訊息型別。

使用rosmsg命令來檢視訊息的詳細情況rosmsg show

rostopic pub可以把資料發布到當前某個正在廣播的話題上。rostopic pub [topic] [msg_type] [args]

$ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/twist – 『[2.0, 0.0, 0.0]』 『[0.0, 0.0, 1.8]』

可以使用rostopic pub -r命令來發布乙個穩定的命令流

rostopic pub /turtle1/cmd_vel geometry_msgs/twist -r 1 – 『[2.0, 0.0, 0.0]』 『[0.0, 0.0, 1.8]』

rostopic hz命令可以用來檢視資料發布的頻率。

rqt_plot命令可以實時顯示乙個發布到某個話題上的資料變化圖形。

ros services

服務(services)是節點之間通訊的另一種方式。服務允許節點傳送請求(request) 並獲得乙個響應(response)

rosservice list 輸出可用服務的資訊

rosservice call 呼叫帶引數的服務 rosservice call [service] [args]

rosservice type 輸出服務型別 rosservice type [service]

rosservice find 依據型別尋找服務find services by service type

rosservice uri 輸出服務的rosrpc uri

通過檢視再生(spawn)服務的資訊,我們來了解帶引數的服務:

$ rosservice type spawn| rossrv show

這個服務使得我們可以在給定的位置和角度生成乙隻新的烏龜。名字引數是可選的,這裡我們不設具體的名字,讓turtlesim自動建立乙個。

$ rosservice call spawn 2 2 0.2 「」

服務返回了新產生的烏龜的名字:

• name: turtle2

using rosparam

rosparam使得我們能夠儲存並操作ros 引數伺服器(parameter server)上的資料。引數伺服器能夠儲存整型、浮點、布林、字串、字典和列表等資料型別。rosparam使用yaml標記語言的語法。一般而言,yaml的表述很自然:1 是整型, 1.0 是浮點型, one是字串, true是布林, [1, 2, 3]是整型列表, 是字典. rosparam有很多指令可以用來操作引數,如下所示:

使用方法:

rosparam set 設定引數 rosparam set [param_name] [value]

rosparam get 獲取引數 rosparam get [param_name] [velue]

rosparam load 從檔案讀取引數

rosparam dump 向檔案中寫入引數

rosparam delete 刪除引數

rosparam list 列出引數名

我們可以使用rosparam get /來顯示引數伺服器上的所有內容:

$ rosparam get /

可能希望儲存這些資訊以備今後重新讀取。這通過rosparam很容易就可以實現:

rosparam dump [file_name]

rosparam load [file_name] [namespace]

ROS學習筆記(1)

大三下實訓,關於機械人應用開發的。好多知識要自學,最近一直在看ros的基礎教程,一邊看一邊動手實踐,但內容較多,所以整理一下方便以後回顧。嫌麻煩沒有裝雙系統,所以用的是linux虛擬機器,在虛擬機器上裝ros網上有很多教程,我找到了乙個映象版本ubuntu for ros,裝好後直接就用了,也挺方便...

ROS學習筆記 1

一 向乙個topic發布msg 1 初始化節點 rospy.init node 節點名 anonymous true 2 定義乙個發布者 pub rospy.pubulisher 話題名稱 訊息型別,列隊長度queue size 這裡我對 話題名稱 的理解是 如果是對已存在的話題下傳送訊息,則輸入對...

ROS2學習筆記1 安裝

系統 ubuntu 18.04 64位 ros2 eloquent 1.修改為清華軟體源 ubuntu的軟體源配置檔案是 etc apt sources.list,需完全替換為新的軟體源映象。命令 sudo vi etc apt sources.list內容 預設注釋了原始碼映象以提高 apt up...