<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 7.4 param與time ## 7.4.1 param_demo 相比roscpp中有兩套對param操作的API,rospy關于param的函數就顯得簡單多了,包括了增刪查改等用法: `rospy.get_param()`,`rospy.set_param()`,`rospy.has_param()`,`rospy.delete_param()`,`rospy.search_param()`,`rospy.get_param_names()`。 下面我們來看看param_demo里的代碼: ```python #!/usr/bin/env python # coding:utf-8 import rospy def param_demo(): rospy.init_node("param_demo") rate = rospy.Rate(1) while(not rospy.is_shutdown()): #get param parameter1 = rospy.get_param("/param1") parameter2 = rospy.get_param("/param2", default=222) rospy.loginfo('Get param1 = %d', parameter1) rospy.loginfo('Get param2 = %d', parameter2) #delete param rospy.delete_param('/param2') #set param rospy.set_param('/param2',2) #check param ifparam3 = rospy.has_param('/param3') if(ifparam3): rospy.loginfo('/param3 exists') else: rospy.loginfo('/param3 does not exist') #get all param names params = rospy.get_param_names() rospy.loginfo('param list: %s', params) rate.sleep() if __name__=="__main__": param_demo() ``` ## 7.4.2 time_demo #### 時鐘 rospy中的關于時鐘的操作和roscpp是一致的,都有Time、Duration和Rate三個類。 首先,Time和Duration前者標識的是某個時刻(例如今天22:00),而Duration表示的是時長(例如一周)。但他們具有相同的結構(秒和納秒): ``` int32 secs int32 secs ``` #### 創建Time和Duration: rospy中的Time和Duration的構造函數類似,都是`_init_(self,secs=0, nsecs=0)`,指定秒和納秒($$1ns = 10^{-9}s$$) ```python time_now1 = rospy.get_rostime() #當前時刻的Time對象 返回Time對象 time_now2 = rospy.Time.now() #同上 time_now3 = rospy.get_time() #得到當前時間,返回float 4單位秒 time_4 = rospy.Time(5) #創建5s的時刻 duration = rospy.Duration(3*60) #創建3min時長 ``` 關于Time、Duration之間的加減法和類型轉換,和roscpp中的完全一致,請參考5.6節,此處不再重復。 #### sleep ```python duration.sleep() #掛起 rospy.sleep(duration) #同上,這兩種方式效果完全一致 loop_rate = Rate(5) #利用Rate來控制循環頻率 while(rospy.is_shutdown()): loop_rate.sleep() #掛起,會考慮上次loop_rate.sleep的時間 ``` 關于sleep的方法,Rate類中的sleep主要用來保持一個循環按照固定的頻率,循環中一般都是發布消息、執行周期性任務的操作。這里的sleep會考慮上次sleep的時間,從而使整個循環嚴格按照指定的頻率。 #### 定時器Timer rospy里的定時器和roscpp中的也類似,只不過不是用句柄來創建,而是直接`rospy.Timer(Duration, callback)`,第一個參數是時長,第二個參數是回調函數。 ```python def my_callback(event): print 'Timer called at ' + str(event.current_real) rospy.Timer(rospy.Duration(2), my_callback) #每2s觸發一次callback函數 rospy.spin() ``` 同樣不要忘了`rospy.spin()`,只有spin才能觸發回調函數。 回調函數的傳入值是`TimerEvent`類型,該類型包括以下幾個屬性: ``` rospy.TimerEvent last_expected 理想情況下為上一次回調應該發生的時間 last_real 上次回調實際發生的時間 current_expected 本次回調應該發生的時間 current_real 本次回調實際發生的時間 last_duration 上次回調所用的時間(結束-開始) ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看