Python學習筆記10 31

2021-07-24 05:42:44 字數 4258 閱讀 7303

'''如果您正在編寫ros節點,則需要匯入std_msgs.msg匯入是為了我們可以呼叫std_msgs / string訊息型別(乙個簡單的字串容器)進行發布。'''

deftalker

(): pub = rospy.publisher('chatter', string, queue_size=10)

'''這部分**定義了talker與ros其餘部分的介面。 pub = rospy.publisher(「chatter」,string,queue_size = 10)宣告您的節點正在使用訊息型別string發布到chatter主題。 string這裡實際上是類std_msgs.msg.string。 queue_size引數使新新增的,含義為如果任何訂戶沒有足夠快地接收它們,則限制排隊的訊息量。 在ros之前的版本中只省略了引數。

''' rospy.init_node('talker', anonymous=true)

'''rospy.init_node(name),非常重要,因為它告訴rospy你的節點的名稱 - 直到rospy有這個資訊,它才能開始與ros主機通訊。 在這種情況下,您的節點將命名為talker。 注意:名稱必須是基本名稱,即它不能包含任何斜槓「/」。

''' rate = rospy.rate(10) # 10hz

'''此行建立乙個rate物件速率。 在它的方法sleep()的幫助下,它提供了一種方便的途徑使得迴圈可以按照指定的速率進行。 它的引數為10,我們應該期望每秒迴圈10次(只要我們的處理時間不超過1/10秒)!

'''while

not rospy.is_shutdown():

hello_str = "hello world %s" % rospy.get_time()

rospy.loginfo(hello_str)

pub.publish(hello_str)

rate.sleep()

'''這個迴圈是乙個相當標準的rospy結構:檢查rospy.is_shutdown()標誌,然後做工作。 你必須檢查is_shutdown()來檢查你的程式是否應該退出(例如,如果有乙個ctrl-c或其他)。 在這種情況下,「工作」是對pub.publish(hello_str)的呼叫,它將字串發布到我們的chatter主題。 rate.sleep(),相當於延時程式。

(你也可以執行rospy.sleep()這是類似於time.sleep(),除了它工作與模擬時間(見時鐘)。

這個迴圈也呼叫rospy.loginfo(str),它執行三重任務:訊息被列印到螢幕,它被寫入節點的日誌檔案,它被寫入rosout。 rosout是乙個方便的除錯:可以使用rqt_console提取訊息,而不必使用node的輸出查詢控制台視窗。

'''if __name__ == '__main__':

try:

talker()

except rospy.rosinterruptexception:

pass

'''除了標準的python __main__檢查,這會捕獲乙個rospy.rosinterruptexception異常,當按下ctrl-c或者你的node被關閉時,可以通過rospy.sleep()和rospy.rate.sleep()方法丟擲異常。 引發此異常的原因是,您不會在sleep()之後意外繼續執行**。

'''python 知識:

1.#!/usr/bin/env python

每乙個python的ros 節點檔案都會在開頭寫上這一句。

2.import:

引入不屬於python內建函式的庫

3.如何匯入message

有時候有一些特定的message需要匯入,一般是有乙個msg檔案。

所以,比如要匯入turtlesim/pose的message型別,那麼在python中是這樣:

from turtlesim.msg import pose
2.writting a listener

#!/usr/bin/env python

import rospy

from std_msgs.msg import string

defcallback

(data):

rospy.loginfo(rospy.get_caller_id() + "i heard %s", data.data)

deflistener

():# in ros, nodes are uniquely named. if two nodes with the same

# node are launched, the previous one is kicked off. the

# anonymous=true flag means that rospy will choose a unique

# name for our 'listener' node so that multiple listeners can

# run simultaneously.

rospy.init_node('listener', anonymous=true)

rospy.subscriber("chatter", string, callback)

# spin() simply keeps python from exiting until this node is stopped

rospy.spin()

if __name__ == '__main__':

listener()

$ chmod +x listener.py
關於rospy.get_caller_id

def

callback

(data):

rospy.loginfo(rospy.get_caller_id()+": %s",data.data)

def

callback

(data):

rospy.loginfo(rospy.get_caller_id()+"i heard snippy think something: %s",data.data)

10 31 課堂筆記

壓縮打包的工作使用場景 解壓壓縮包 在備份資料之後,為了節省空間,來壓縮檔案 gzip 想把伺服器上的目錄打包或壓縮 zip tar 傳輸到遠端的伺服器上去 注 家用寬頻和機房寬頻的區別 例如以頻寬100m 這裡的頻寬指的是位元而不是位元組 為例,在機房中上行和下行的頻寬都是100m,而家用寬頻的下...

python教學筆記 python學習筆記(一)

1.eval 函式 eval是單詞evaluate的縮寫,就是 求.的值的意思。eval 函式的作用是把str轉換成list,dict,tuple.li 1 1,2,3 print eval li 1 di 1 print eval di 1 tu 1 2,4,6 print eval tu 1 執...

python學習筆記

coding utf 8 coding utf 8 應該像八股文一樣在每個指令碼的頭部宣告,這是個忠告 為了解決中文相容問題,同時你應該選擇支援 unicode 編碼的編輯器環境,保證在執行指令碼中的每個漢字都是使用 utf 8 編碼過的。cdays 5 exercise 3.py 求0 100之間...