日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ROStopic 通信方式

發布時間:2025/7/14 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ROStopic 通信方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

操作演示,對 topic 通信方式的理解請看:點擊打開鏈接

開啟終端,運行 roscore

新開一個終端(已經安裝好(ros-<distro>-ros-tutorials 包,否則運行? sudo?apt-get?install?ros-<distro>-ros-tutorials ,<distro> 為 ROS 發行版本名稱),運行 rosrun?turtlesim?turtlesim_node

運行 turtle_teleop_key 節點

rosrun turtlesim turtle_teleop_key

用鍵盤控制小烏龜運動。


1.使用rqt_graph

安裝

sudo apt-get install ros-kinetic-rqt sudo apt-get install ros-kinetic-rqt-common-plugins

運行

rosrun rqt_graph rqt_graph結果:

如果將鼠標放在/turtle1/command_velocity上方,相應的ROS節點(藍色和綠色)和話題(紅色)就會高亮顯示。正如你所看到的,turtlesim_node和turtle_teleop_key節點正通過一個名為/turtle1/command_velocity的話題來互相通信。


2.rostopic介紹


2.1 使用 rostopic echo

命令格式:

rostopic echo [topic]

查看 turtle_teleop_key 節點在 /turtle1/command_velocity 話題(非hydro版)上發布的數據

rostopic echo /turtle1/cmd_vel

在 turtle_teleop_key 節點終端下,每按一下方向鍵都會輸出這樣的信息,再次運行

rosrun rqt_graph rqt_graph


可以看到 turtlesim_node 和 turtle_teleop_key 節點正通過一個名為 /turtle1/command_velocity 的話題來互相通信。


2.2 使用 rostopic list

rostopic list能夠列出所有當前訂閱和發布的話題。

新開一個終端,

rostopic list運行結果:


運行

rostopic list -v列出詳細信息:



3.ros Messages

3.1使用rostopic type

rostopic type 命令用來查看所發布話題的消息類型

命令格式:

rostopic type [topic]

運行

rostopic type /turtle1/cmd_vel

結果:


運行

rosmsg show geometry_msgs/Twist

查看此消息類型:


已經知道了消息類型,接下來我們就可以給 turtle 發布命令了。


4.繼續學習 rostopic

4.1 使用 rostopic pub

命令格式:

rostopic pub [topic] [msg-type] [args]

新運行一個 turtlesim_node 節點,運行:

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

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

-1?(單個破折號)這個參數選項使rostopic發布一條消息后馬上退出

/turtle1/cmd_vel 這是消息所發布到的話題名稱

geometry_msgs/Twist 這是所發布消息的類型

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

'[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]' 正如之前提到的,在一個turtlesim/Velocity消息里面包含有兩個浮點型元素:linear和angular。在本例中,2.0是linear的值,1.8是angular的值。這些參數其實是按照YAML語法格式編寫的,這在YAML文檔中有更多的描述。


turtle已經停止移動了。這是因為turtle需要一個穩定的頻率為1Hz的命令流來保持移動狀態。

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


再次運行:

rosrun rqt_graph rqt_graph

結果:


可以看到 rostopic 發布器節點正在與 rostopic echo節點進行通信

4.2 使用 rostopic hz
rostopic hz命令可以用來查看數據發布的頻率

命令格式:

rostopic hz [topic]

運行:

rostopic hz /turtle1/pose看到 turtlesim_node 發布 /turtle/pose 時的速度



5 使用 rqt_plot

運行:

rosrun rqt_plot rqt_plot

在左上角的文本框分別輸入 /turtle1/pose/x,點擊 + 號,/turtle1/pose/y 點擊 + 號。

按下減號按鈕會顯示一組菜單讓你隱藏圖形中指定的話題。現在隱藏掉你剛才添加的話題并添加/turtle1/pose/theta



6 編寫*.msg

1. 在 /catkin_ws/src 中創建一個 pkg

catkin_create_pkg beginner_tutorials rospy roscpp std_msgs

2. 定義新的消息

mkdir msg echo "int64 num" > msg/Num.msg3.接下來,還有關鍵的一步:我們要確保msg文件被轉換成為C++,Python和其他語言的源代碼: 查看package.xml, 確保它包含一下兩條語句
<build_depend>message_generation</build_depend><run_depend>message_runtime</run_depend>

如果沒有,添加進去。 注意,在構建的時候,我們只需要"message_generation"。然而,在運行的時候,我們只需要"message_runtime",否則會編譯/運行失敗。


在 CMakeLists.txt文件中,利用find_package 函數,增加對message_generation的依賴,這樣就可以生成消息了。 可以直接在COMPONENTS的列表里增加message_generation,就像這樣

同樣,需要確保設置了運行依賴:

手動添加.msg文件后,我們要確保CMake知道在什么時候重新配置我們的project。 確保添加了如下代碼:

進入 /catkin_ws 編譯后應該像這樣:


以下是未修改 package.xml 和 CMakeLists.txt 的編譯結果




轉載于:https://www.cnblogs.com/NikkiNikita/p/9450739.html

總結

以上是生活随笔為你收集整理的ROStopic 通信方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。