機器人操作系統(tǒng)ROSIndigo入門學習(7)——理解ROSTopic_第1頁
機器人操作系統(tǒng)ROSIndigo入門學習(7)——理解ROSTopic_第2頁
機器人操作系統(tǒng)ROSIndigo入門學習(7)——理解ROSTopic_第3頁
機器人操作系統(tǒng)ROSIndigo入門學習(7)——理解ROSTopic_第4頁
機器人操作系統(tǒng)ROSIndigo入門學習(7)——理解ROSTopic_第5頁
免費預覽已結束,剩余5頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、文檔來源為:從網(wǎng)絡收集整理.word 版本可編輯.歡迎下載支持.1. 理解 ROS Topic這個教程介紹ROS topic 和 rostopic 和 rqt_plot 命令行工具1.1 建立先在一個新的終端中運行roscore ;$ roscore注意:只能運行一個roscore.在新的終端中運行turtlesim;$ rosrun turtlesim turtlesim_node 鍵盤遙控我們需要用一些東西去控制turtle ,在新的終端運行:$ rosrun turtlesim turtle_teleop_key INFO 46.0: Started node /teleop_turtl

2、e, pid 5528, bound on aqy, xmlrpc port 43918, tcpros port 55936, logging to /ros/ros/log/teleop_turtle_5528.log, using real timeReading from keyboard Use arrow keys to move the turtle.現(xiàn)在你可以用鍵盤上的方向鍵控制小烏龜了(保持鍵盤輸入窗口在焦點)再看看窗口后面發(fā)生了什么1.2 ROS Topicturtlesim_node 和 turtle_teleop_key node 之間用 topic 交流通信turtl

3、e_teleop_key 在這個 topic 上發(fā)布按鍵敲擊,而turtlesim 訂閱同樣的topic 接受按鍵敲擊讓我們用顯示現(xiàn)在正在運行的topic 和 nodes.10文檔來源為:從網(wǎng)絡收集整理.word 版本可編輯.歡迎下載支持.rqt_grah 是 qpt是紅色正如你所是通過叫做如果你是用electric 或更早的版本,建議用rxygrah 替代。rqt_grah 創(chuàng)建了一個動態(tài)的圖形顯示系統(tǒng)上正在進行什么,package 的一部分運行:$ sudo apt-get install ros-<distro>-rqt$ sudo apt-get install ros-&

4、lt;distro>-rqt-common-plugins<distro> 用你的 ros 版本名替代再在新終端輸入:$ rosrun rqt_graph rqt_graph你將會看到:如果把鼠標放上去將會高亮,node 是藍色或者綠色,topic見到的一樣,turtlesim_node and the turtle_teleop_key nodes/turtle1/command_velocity. 的在通信rostopic 工具允許你從rostopic 中獲得信息通過:$ rostopic -h 可以獲得等多命令選項rostopic bw display bandwidt

5、h used by topic rostopic echo print messages to screen rostopic hz display publishing rate of topic rostopic list print information about active topics rostopic pub publish data to topic rostopic type print topic type讓我們用這些命令去檢驗一下turtlesim.echo用法:rostopic echo topic允許我們看看turtle_teleop_key node. 發(fā)布的命

6、令速度數(shù)據(jù);對于 ROS Hydro 和之后的版本,這個數(shù)據(jù)在發(fā)布在/turtle1/cmd_vel topic ,在新終端,運行:$ rostopic echo /turtle1/cmd_vel選擇 turtle_teleop_key 終端,用方向鍵控制小烏龜,你將會看到linear:x: 2.0y: 0.0z: 0.0angular:x: 0.0y: 0.0z: 0.0-linear:x: 2.0y: 0.0z: 0.0angular:x: 0.0y: 0.0z: 0.0讓我們再來看看rqt_graph 點擊左上角的刷新按鈕顯示新的node 你將會看到 rostopic echo 也訂閱了

7、turtle1/command_velocity topic.listrostopic list 會列出現(xiàn)在所有被訂閱和發(fā)布的topic.看看這個命令需要什么參數(shù),運行:$ rostopic list -hUsage: rostopic list /topicOptions:-h, -helpshow this help message and exit-b BAGFILE, -bag=BAGFILElist topics in .bag file-v, -verbose-p-slist full details about each topic list only publishers li

8、st only subscribers對于 verbose 選項:$ rostopic list -v顯示詳細的一列topic 信息包括發(fā)布的,訂閱的和它們的類型Published topics:* /turtle1/color_sensor turtlesim/Color 1 publisher* /turtle1/command_velocity turtlesim/Velocity 1 publisher* /rosout roslib/Log 2 publishers* /rosout_agg roslib/Log 1 publisher* /turtle1/pose turtlesi

9、m/Pose 1 publisherSubscribed topics:* /turtle1/command_velocity turtlesim/Velocity 1 subscriber* /rosout roslib/Log 1 subscriber1.3 ROS MessagesTopic 上的通信通過在nodes 之間發(fā)送messages 來實現(xiàn)對于發(fā)布者(turtle_teleop_key) 和訂閱者(turtlesim_node) 之間的通信必須使用相同的message 類型 這就意味著,topic 的類型由發(fā)布的message 類型決定發(fā)布在 topic 上的 message

10、的類型可以由rostopic type 來決定typerostopic type 返回任何topic 發(fā)布的 message 類型用法:rostopic type topic對于 ROS Hydro 和之后的版本:$ rostopic type /turtle1/cmd_vel你會得到:geometry_msgs/Twist想得到詳細信息運行:$ rosmsg show geometry_msgs/Twistgeometry_msgs/Vector3 linearfloat64 xfloat64 yfloat64 zgeometry_msgs/Vector3 angularfloat64 xf

11、loat64 yfloat64 z既然我們已經(jīng)知道turtlesim 期待什么類型的message 了,我們可以發(fā)布命令給小烏龜1.4 繼 續(xù) rostopic既然我們已經(jīng)知道ros message 了,讓我們一起用ros messages 吧。pubrostopic pub 把數(shù)據(jù)發(fā)布到正被廣播的topic 上。用法:rostopic pub topic msg_type args對于 ROS Hydro 和之后的版本:$ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist - '2.0, 0.0, 0.0' '0

12、.0, 0.0, 1.8'這會給 turtle 發(fā)布一個message 告訴它線速度2.0,角速度 1.8.這個命令十分復雜,所以我們仔細看看它的每個參數(shù)對于 ROS Hydro 和之后的版本:這個命令會發(fā)送messages 給給定的topic:rostopic pub這個選項使得rostopic 只發(fā)布一條message 然后退出:-1這是要發(fā)布給它信息的那個topic:/turtle1/cmd_vel這是發(fā)布topic 時的 message 類型:geometry_msgs/Twist雙虛線告訴選項剖析器接下來的參數(shù)都不是選擇,以免把負號后面的參數(shù)當成 參數(shù)選項。-一個 geome

13、try_msgs/Twist 有兩組由三個浮點元素組成得的向量:線性的和角度的這樣的話,'2.0, 0.0, 0.0' 就是線性值x=2.0,y=0.0,z=0.0, 而'0.0, 0.0, 1.8' 就是角度的值x=0.0,y=0.0,z=1.8 這些參數(shù)遵從YAML 語法規(guī)則。更多信息查看.'2.0, 0.0, 0.0' '0.0, 0.0, 1.8'你也許注意到小烏龜已經(jīng)停止了;這是因為小烏龜需要穩(wěn)定的1HZ的命令流去保持運動。我們可以用rostopic pub -r 命令發(fā)布一個穩(wěn)定的命令流。對于 ROS Hydro 和之

14、后的版本:$ rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 - '2.0, 0.0, 0.0' '0.0, 0.0, 1.8'這將以 1HZ 的速度去發(fā)布速度命令給速度topic.再刷新一下rqt_graph ,看到 rostopic pub node 在和 rostopic echonode 通信當你看到小烏龜在繞圈圈的時候可以在一個新的終端輸入rostopic echo命令看看turtlesim 發(fā)布的數(shù)據(jù)。hzrostopic hz 報告數(shù)據(jù)發(fā)布的速度用法:rostopic hz topic來

15、看看 turtkesim node 以多快的速度發(fā)布/turtle1/pose 。$ rostopic hz /turtle1/pose你會看到:subscribed to /turtle1/poseaverage rate: 59.354min: 0.005s max: 0.027s std dev: 0.00284s window: 58average rate: 59.459min: 0.005s max: 0.027s std dev: 0.00271s window: 118average rate: 59.539min: 0.004s max: 0.030s std dev: 0.

16、00339s window: 177average rate: 59.492min: 0.004s max: 0.030s std dev: 0.00380s window: 237average rate: 59.463min: 0.004s max: 0.030s std dev: 0.00380s window: 290現(xiàn)在我們知道turtlesim 大概以 60HZ 的速度發(fā)布數(shù)據(jù)。也可以用rostopictype 和 rosmsg 獲取關于topic 進一步的信息。對于 ROS Hydro 和之后的版本:$ rostopic type /turtle1/cmd_vel | rosmsg show現(xiàn)在我們已經(jīng)用rostopic 檢驗了 topic ,讓我們用其他工具看看turtlesim發(fā)布的數(shù)據(jù)把。1.5 使用 rqt_plotelectric 之前的版本用rxplot 代替。rqt_plot 以時間軸的形式顯示發(fā)布在topic 上的數(shù)據(jù)。這里我們用它去顯示發(fā)布在 /turtle1/pose topic 上的數(shù)據(jù)。首先:$ rosrun rqt_plot rqt_plot這時會彈出一個新的窗口,一個文本框出

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論