【ROS實踐入門(三)小海龜案例主題與節點交互】

【ROS實踐學習入門系列(三)小海龜案例主題與節點交互

本內容經官網實例以及一些參考書總結而成,歡迎留言評論交流~

聯繫方式:ziyuanw#foxmail.com(#換成@)

 一、小海龜案例

還是先通過小海龜案例分析ROS各種基本命令使用方法,熟練之後才能往後面學習更加深入的東西。

1.查找包路徑:

rospack find [packagename]

以查找小海龜案例爲例:

2.獲得功能包或功能包集文件列表:

rosls [packagename]

3.切換ROS空間內下屬任一文件目錄:

roscd [directory]

4.節點操作相關命令:

首先CTRL+ALT+T打開新的終端並啓動roscore,然後運行小海龜案例:

roscore
rosrun turtlesim turtlesim_node

節點信息相關命令:

①rosnode info  [nodename]

②rosnode ping [nodename]

③rosnode machine

顯示當前運行設備名。

rosnode machine <machine-name>

顯示該設備名下正在執行的節點名稱:

④rosnode kill   [nodename]

⑤rosnode cleanup 

不常用。

是一種臨時清理節點的解決方案,在正常操作中不鼓勵使用。它的優點是美觀,缺點是可能無法註冊正常運行的節點。

二、主題與節點交互

依舊是可使用小海龜案例:(還是roscore和rosrun turtlesim turtlesim_node。就不演示了)

1.主題相關基本命令操作:

①rostopic   bw   [topic] :主題所使用帶寬

②rostopic   echo   [topic] :消息輸出

③rostopic   find   [topic] :查找主題

④rostopic   hz   [topic] :主題發佈頻率

⑤rostopic   info   [topic] :活動主題信息

⑥rostopic   list   [topic]  :列出活動主題

⑦rostopic   type   [topic] :將數據發佈到主題

若想要使用鍵盤方向建移動海龜:

清除所有終端重新打開(使用CTRL+Shift+T可在同一窗口內打開三個終端):

第一個終端:

roscore

第二個終端:

rosrun turtlesim turtle_node

第三個終端:(注意:鼠標光標要放在第三個窗口才能進行移動操作)

 2.小海龜以固定方向自行移動:

1.發佈主題與其進行交互:

rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'

以上命令會發送一條消息給turtlesim,告訴它以2.0大小的線速度和1.8大小的角速度開始移動。

命令參數說明:

rostopic pub:這條命令將會發布消息到某個給定的話題。

-1(單個破折號):這個參數選項使rostopic發佈一條消息後馬上退出。

/turtle1/cmd_vel :這是消息所發佈到的話題名稱。(其他老版本爲/turtle1/command_velocity)

geometry_msgs/Twist:這是所發佈消息的類型。(其他老版本爲turtlesim/Velocity)

--:(雙破折號)這會告訴命令選項解析器接下來的參數部分都不是命令選項。這在參數裏面包含有破折號-(比如負號)時是必須要添加的。

2.0 1.8:之前提到的,在一個turtlesim/Velocity消息裏面包含有兩個浮點型元素:linear和angular。在本例中,2.0是linear的值,1.8是angular的值。這些參數其實是按照ROS官網YAML語法格式編寫的。線速度linear分量參數:x,y,z。角速度angular分量參數:x,y,z。

2.一直轉圈:

turtle需要一個穩定的頻率爲1Hz的命令流來保持移動狀態。可以使用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]'

3.ROS話題理解:

turtlesim_node節點和turtle_teleop_key節點之間是通過一個ROS話題來互相通信的。turtle_teleop_key在一個話題上發佈按鍵輸入消息,而turtlesim則訂閱該話題以接收該消息。

  • rqt_graph查看節點話題情況:
rosrun rqt_graph rqt_graph

鼠標移動到上面,可以發現rostopic發佈器節點(紅色)正在與rostopic echo節點(綠色),通過鍵盤/turtle1/cmd_vel控制方向的輸入消息,進行通信:

  • rqt_plot實時顯示數據變化:
rosrun rqt_plot rqt_plot

打開時是空的,需要在topic文本框自行添加/turtle1/pose/x後之前處於禁用狀態的加號“+”按鈕將會被使能變亮。按一下該按鈕,並對/turtle1/pose/y重複相同的過程。現在你會在圖形中看到turtle的x-y位置座標圖。再添加/turtle1/pose/theta。減號“-”按鈕可隱藏顯示所選topic數據。

 

上一篇:【ROS實踐入門(二)ROS文件概念和工作空間】

下一篇:【ROS實踐入門(四)使用服務與參數服務器】

 

參考資料:

【1】ROS官網:http://wiki.ros.org/cn

【2】ROS機器人高效編程

【3】機器人操作系統ROS淺析

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章