您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 >
01 ros發布和訂閱python(ROS使用python3)
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-07-17 05:23:04【】5人已围观
简介如何編寫ros的python程序ROSIndigo beginner_Tutorials-10 編寫 ROS 話題版的 HelloWorld 
如何編寫ros的python程序
ROS Indigo beginner_Tutorials-10 編寫 ROS 話題版的 Hello World 程序(Python版)
我使用的虛擬機軟件:VMware Workstation 11
使用的Ubuntu系統:Ubuntu 14.04.4 LTS
ROS 版本:ROS Indigo
1. 前言 :
Hello world 程序,在我們編程界,代表學習某種語言編寫的第一個程序。對于 ROS 機器人操作系統來說,這個 Hello World 程序就是 : 寫一個簡單的消息發布器(發送) 和 訂閱器(接收)。
2. 準備工作 :
C++ 的程序都會存放在每個程序包的 src 文件夾里。 Python 不同,Python 程序都存放在 scripts 文件夾中, 反正意思都是 源文件 包。
Step 1 . 所以,先在 beginner_tutorials 軟件包中創建一個 scripts 文件夾:
$ roscd beginner_tutorials$ mkdir scripts$ cd scripts123
3. 編寫消息發布器節點程序:
如果你懶得去寫的話,你可以使用 wget 命令, 在 github 上獲取一個 talker.py 源代碼。如何獲取呢 ?
Step 2 . 開一個終端,輸入下面的命令就可以獲取 talker.py :
$ wget
-devel/rospy_tutorials/001_talker_listener/talker.py$ ls
talker.py123
但是我建議你親自動手,寫一寫:手動創建一個 talker.py 文件在 /scripys 文件夾里:
$ roscd beginner_tutorials/scripts$ gedit talker.py12
將這上面鏈接里的代碼手動輸入到 talker.py 文件中。(我就不將代碼貼上來了)
下面我來講解一下代碼:
Step 3 . 最后一步,給這個 talker.py 文件加上可執行權限:
$ chmod +x talker.py1
這樣,一個發布器就編寫完了。我們不要急著去運行它,現在我們編寫一個訂閱器,來接收這個發布器發布的話題:
4. 編寫消息訂閱器節點程序:
Step 4 . 和發布器一樣,我們使用wget命令獲取訂閱器的源代碼 listener.py:
$ roscd beginner_tutorials/scripts/$ wget
ials/indigo-devel/rospy_tutorials/001_talker_listener/listener.py$ ls
listener.py talker.py1234
但是,我還是建議你自己動手寫一下。
好吧,下面我們開始講解 listener.py 里面的代碼,這個listener.py程序的代碼簡單:
Step 5 . 最后不要忘了給這個listener.py 加可執行權限:
$ chmod +x listener.py1
5. 運行 :
對于python 來說,我們不需要使用 catkin_make 命令對 ~/catkin_ws 工作空間進行編譯。因為python文件本身就是可執行文件(前提是我們給它添加可執行權限)。
OK,發布器 和 訂閱器 都創建完了。下面我們運行它們,看看效果:
Step 6 . 新打開一個終端,先執行 ros買粉絲re 命令:
$ ros買粉絲re1
Step 7 . 新打開一個終端,啟動 發布器 :
$ rosrun beginner_tutorials talker.py 1
Step 8 . 新打開一個終端,啟動 訂閱器 :
$ rosrun beginner_tutorials listener.py 1
運行效果:
Step 9 . 我們來使用 rostopic list ,看看當前的話題有哪些:
$ rostopic list
/chatter
/rosout
/rosout_agg1234
其中 /chatter 就是我們在發布器里面發布的 ROS話題。
6. 擴展,編寫一個啟動腳本文件 :
還記得上一節,我們講的ROS的啟動腳本文件吧,下面我們來編寫一個launch文件,來將 talker.py 和listener.py 文件的啟動工作交個這個launch文件來做:
Step 10 . 來到 beginner_tutorials程序包的 /launch 路徑下,新建一個 hello_world_topic.launch 文件:
$ roscd beginner_tutorials/launch$ gedit hello_world_topic.launch #使用你自己喜歡的文本編輯器12
Step 11 . 輸入下面的代碼:
<launch>
<node pkg="beginner_tutorials" name="talker" type="talker.py" />
<node pkg="beginner_tutorials" name="listener" type="listener.py" /></launch>1234
Step 12 . 現在,將之前打開的終端都關閉,我們啟動這個腳本: (開一個終端 : Ctrl+Alt+T)
$ roslaunch beginner_tutorials hello_world_topic.launch1
運行結果:
上面截圖的輸出顯示: talker.py 和 listener.py 腳本運行成功。但是并沒有出現刷屏的現象。這是為什么? 為了證明這個腳本程序真的成功的運行了,我們來試一試:
Step 13 . 重新開一個終端,輸入下面的命令:
$ rosrun list$ rostopic list$ rostopic echo /chatter123
Step 14 . 現在 Ctrl+C 結束監聽 /chatter 話題。使用 rqt_graph 對當前啟動的節點可視化:
$ rqt_graph1
這些足以說明,hello_world_topic.launch 啟動腳本文件,啟動成功。
總結: 發布器 和 訂閱器 是很簡單的, 就是簡單的發布一個 自定義的話題。
我之前使用說過:節點之間通訊的方式有兩種 : 話題(rostopic) 和 服務(rosservice)
所以,接下來,我們會講:使用ROS服務來完成ROS版 Hello World 程序的例子。但是在這之前,我們需要學一學:如何創建自定義的ROS消息和ROS服務,以便 ROS 服務版的 Hello World 程序的編寫。
所以下一講,我們來學習:如何創建自定義的ROS消息和ROS服務。
ROS使用python3
參考:
為了使用python3的圖像處理程序,需要使用到ros接口,但是由于原生ros接口不支持python3,只能使用python2.7(時間2020-07,版本melodic),一下步驟主要為了使用ros調用的方式調用python3的程序
由于ros接收圖像數據使用的是cv_bridge 接口,所以先編譯python3版本的cv_bridge
注意:此時要先安裝好python3的環境,可以按照以下方式安裝
進入到工作空間進行編譯
會有如下提示
編譯完成后,可以在工作路徑下的install文件夾里生成需要的庫,需要使用python3版本的cv_bridge時,就將這個環境變量導入即可
extend參數的作用是讓這次的路徑配置不影響之前配置好的路徑
1. 在使用rosrun 運行程序時,默認還會調用原生melodic的cv_bridge
我的處理方法是將原來的python版本cv_bridge刪除
2. 編譯完成會有錯誤提示,如下圖,但不影響使用
編譯安裝:
在編譯時,使用如下命令:
編譯過程中會有錯誤提示
解決方法:
參考 買粉絲s://answers.ros.org/question/257757/importerror-no-mole-named-em-error/
很赞哦!(9)
相关文章
- 01 抖音帶貨達人等級有什么用(抖音直播帶貨大v和達人區別)
- 01 抖音帶貨背景圖片2023年只有不斷去努力(抖音短視頻帶貨同步到西瓜頭條好嗎?)
- 01 抖音開通海外直播權限怎么開(請問如何開通抖音直播權限?)
- 01 抖音怎么開通帶貨的具體步驟(抖音商品櫥窗怎么開通?)
- 01 女騎士幫粉絲買摩托送頭盔(推薦你們覺得最好看的泰劇,有字幕的,)
- 01 女粉絲找主播買車(當年狠心跟張大仙分手,拿走1000萬“分手費”的灰灰,她現在怎么樣了?)
- 01 女生讀國際經濟貿易專業好嗎(國際經濟與貿易專業就業率如何?男生和女生相比誰更好就業?)
- 01 好看的鎖屏壁紙ins風(圖片2021最火爆)
- 01 好奇號雜志官方訂閱一年(好奇號雜志怎么樣)
- 01 女生網名ins冷淡風槍(冷門森系ins冷淡風網名)