ROS學習

TF2 package:

tf2是tf的替代版,tf2是一個允許用戶隨時跟蹤多個座標幀的包。tf在時間緩衝的樹結構中維護座標幀之間的關係,並允許用戶在任意兩個座標幀之間任意時間點轉換點、向量等。典型應用就是:一隻烏龜跟隨着被控制的烏龜移動。
官方demo:

1. Set Up the Demo
$ sudo apt-get install ros-kinetic-ros-tutorials ros-kinetic-geometry-tutorials ros-kinetic-rviz ros-kinetic-rosbash ros-kinetic-rqt-tf-tree
2.Running the Demo
$ roslaunch turtle_tf turtle_tf_demo.launch

在這裏插入圖片描述

1 tf Tools

1.1 Using view_frames
view_frames通過ROS上的tf可以創建一個廣播幀的diagram;
1.2 Using rqt_tf_tree
可視化基於ROS發佈的信息框架,用法如下:

rosrun rqt_tf_tree rqt_tf_tree

Or simply:

rqt &

1.3 Using tf_echo
打印任何兩個通過ROS通信的frame;

rosrun tf tf_echo [reference_frame] [target_frame]

2 鍵盤控制小烏龜demo

首先確保roscore已經運行, 打開一個新的終端:

$ roscore

在一個新的終端中運行:

$ rosrun turtlesim turtlesim_node

通過鍵盤遠程控制turtle

$ rosrun turtlesim turtle_teleop_key

turtlesim_node 和 turtle_teleop_key節點之間通過一個ROS話題來相互通信。
turtle_teleop_key:發佈按鍵輸入消息
turtlesim_node:訂閱該話題
使用rqt_graph顯示當前運行的節點和話題(rqt_graph能夠創建一個顯示當前系統運行情況的動態圖形)

rosrun rqt_graph rqt_graph

在這裏插入圖片描述
turtlesim_node和turtle_teleop_key節點正通過一個名爲 /turtle1/cmd_vel的話題來互相通信。

2.1 rostopic介紹

rostopic命令工具能讓你獲取有關ROS話題的信息。可以使用幫助選項查看rostopic的子命令:

$ rostopic -h
	Commands:
		rostopic bw	display bandwidth used by topic
		rostopic delay	display delay of topic from timestamp in header
		rostopic echo	print messages to screen #顯示在某個話題上發佈的數據
		rostopic find	find topics by type
		rostopic hz	display publishing rate of topic    
		rostopic info	print information about active topic
		rostopic list	list active topics  #列出所有當前訂閱和發佈的話題
		rostopic pub	publish data to topic  #發佈消息到某個給定的話題
		rostopic type	print topic or field type #查看所發佈話題的消息類型
	
$ rostopic echo /turtle1/cmd_vel  #查看發佈到該話題( /turtle1/cmd_vel)的數據
  • 刷新rqt_graph可以看到rostopic也訂閱了 /turtle1/cmd_vel 話題:
    在這裏插入圖片描述
  • rostopic list 能夠列出所有當前訂閱和發佈的話題:
rostopic list -h #查看幫助
rostopic list -v #顯示所有發佈和訂閱的話題及其類型的詳細信息
	Published topics:
	 * /turtle1/color_sensor [turtlesim/Color] 1 publisher
	 * /turtle1/cmd_vel [geometry_msgs/Twist] 1 publisher
	 * /rosout [rosgraph_msgs/Log] 4 publishers
	 * /rosout_agg [rosgraph_msgs/Log] 1 publisher
	 * /turtle1/pose [turtlesim/Pose] 1 publisher
	
	Subscribed topics:
	 * /turtle1/cmd_vel [geometry_msgs/Twist] 2 subscribers
	 * /rosout [rosgraph_msgs/Log] 1 subscriber
	 * /statistics [rosgraph_msgs/TopicStatistics] 1 subscriber
  • rostopic type [topic] 可以查看發佈話題的消息類型
  • rosmsg show [topic] 可以查看消息的詳細情況
    在這裏插入圖片描述

2.2 現在我們已經知道了turtlesim節點所期望的消息類型,接下來我們就可以給turtle發佈命令了:

$ 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大小的角速度開始移動。
-1: (單個破折號)這個參數選項使rostopic發佈一條消息後馬上退出;
/turtle1/cmd_vel : 消息所發佈到的話題名稱;
geometry_msgs/Twist : 所發佈消息的類型;
– :(雙破折號)這會告訴命令選項解析器接下來的參數部分都不是命令選項。這在參數裏面包含有破折號-(比如負號)時是必須要添加的。
2.0是linear的值,1.8是angular的值。這些參數其實是按照YAML語法格式編寫的。
在這裏插入圖片描述
執行完pub之後,turtle已經停止了。因爲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]'

這條命令以1Hz的頻率發佈速度命令到速度話題上。

  • rqt_plot命令可以實時顯示一個發佈到某個話題上的數據變化圖形。這裏我們將使用rqt_plot命令來繪製正在發佈到/turtle1/pose話題上的數據變化圖形。

Mavros
catkin_make
rosrun demo demo_node

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