1. 程式人生 > >ROS學習之 cpp時間

ROS學習之 cpp時間

wiki連結: http://wiki.ros.org/roscpp/Overview/Time

    1.時刻和時間間隔

        ROS有內建的時間和時間間隔原始型別,rsolib程式包提供了ros::Time和ros::Duration類
        time是一個具體的時刻(上午9:30)而duration是一段時間(5個小時)duration可以是負值.
        Time和duration有相同的表示。
            int32 sec
            int32 nsec
        ros可以為節點提供一個模擬的時鐘。使用者應該使用roscpp的時間函式獲取當前時間。
        1)獲取當前時間
        ros::Time::now() 返回一個ros::Time例項。
        
        2)建立Time和Duration例項
        通過給定具體的浮點數,來初始化例項物件:
            ros::Time a_little_after_the_beginning(0.001);
            ros::Duration five_seconds(5.0);
        或者通過兩個整數:
            ros::Time a_little_after_the_beginning(0, 1000000);
            ros::Duration five_seconds(5, 0);

        3)轉化Time和Duration例項
        Time和Duration物件可以被轉化成相應的浮點秒數:
            double secs =ros::Time::now().toSec();

            ros::Duration d(0.5);
            secs = d.toSec();
        4)Time和Duration計算
        與其它原始資料型別一樣,可以對time和duration進行算術操作。
        幾個小例子:
            1 hour + 1 hour = 2 hours (duration + duration = duration)
            2 hours - 1 hour = 1 hour (duration - duration = duration)
            Today + 1 day = tomorrow (time + duration = time)
            Today - tomorrow = -1 day (time - time = duration)
            Today + tomorrow = error (time + time is undefined)
        在ros程式碼中的表示:
            ros::Duration two_hours = ros::Duration(60*60) + ros::Duration(60*60);
            ros::Duration one_hour = ros::Duration(2*60*60) - ros::Duration(60*60);
            ros::Time tomorrow = ros::Time::now() + ros::Duration(24*60*60);
            ros::Duration negative_one_day = ros::Time::now() - tomorrow;

    2.睡眠和比率

        bool ros::Duration::sleep()  睡眠一段具體的時間間隔

        ros::Duration(0.5).sleep(); // sleep for half a second

        ros::Rate roslib提供了ros::Rate類來保持一定的頻率來控制迴圈
            ros::Rate r(10); // 10 hz
            while (ros::ok())
            {
              ... do some work ...
              r.sleep();
            }
        注:通常建議使用Timer來代替Rate

    3.壁鐘時間

        如果在模擬時間中,想要獲取實際的壁鐘時間,roslib提供了Wall版本的time構造器。
        如:ros::WallTime  ros::WallDuration ros::WallRate

相關推薦

ROS學習 cpp時間

wiki連結: http://wiki.ros.org/roscpp/Overview/Time    1.時刻和時間間隔         ROS有內建的時間和時間間隔原始型別,rsolib程式包提供了ros::Time和ros::Duration類         tim

ROS學習 cpp回撥函式和輪轉(spin)

wiki連結: http://wiki.ros.org/roscpp/Overview/Callbacks%20and%20Spinning 資料(雲飛機器人實驗室的一篇小文): http://www.yfworld.com/?p=2318 這篇文章會幫助理解ros::s

ROS學習 cpp訊息釋出者和訊息訂閱者

wiki連結: http://wiki.ros.org/roscpp/Overview/Publishers%20and%20Subscribers一、釋出一個話題     其它相關連結:         ros::NodeHandle,ros::NodeHandle::

ROS學習cpp教程

官方連結:     http://wiki.ros.org/roscpp_tutorials 一、編寫簡單的訊息釋出器和訂閱器     1、編寫一個釋出器節點         節點(node)是ROS中值代連線到ros網路中的可執行檔案。接下來,將會建立一個釋出器節點(

ROS學習編譯一個包

cti ges begin -s 包名 code start ner 一個 catkin_make -DCATKIN_WHITELIST_PACKAGES= "包名" $ catkin_make -DCATKIN_WHITELIST_PACKAGES="begin

ros學習kobuki

key con core sta -i fig other del mini sudo apt-get install ros-indigo-kobuki ros-indigo-kobuki-corerosrun kobuki_ftdi create_udev_rules#

c++ 學習常用時間函數一覽

差異 進行 學習 當前時間 沒有 使用 ++ 本地 轉換 c++ 學習之常用時間函數一覽 時間的種類 本地時間:UTC + 時區差 = 本地時間 UTC(世界協調時):以地球自轉為基礎的時間標準。 GMT(世界時,格林威治時間):對地球轉速周期性差異進行校正後的世界時。 一

ROS學習路的整理

        ROS是基於linux系統的一個次級作業系統,目前被看做是機器人界的一套標準平臺,可以類比手機的安卓作業系統或者是電腦的windows作業系統。ROS最大的優點在於靈活、低耦合、分散式、開源以及功能強大而豐富的

ROS學習路(二)檔案系統

    在ROS的檔案包裡面,有純粹的程式碼,也有編譯後的二進位制檔案。如何將這些檔案有條不紊的整理起來呢?於是就有了下面這種檔案系統: 對於每一個特定的功能,用一個資料夾包起來,就是所謂的功能包: (1)config:放置功能包中的配置檔案,由使用者建立,檔名可以不同

ros學習camera calibration 單目攝像頭標定

環境:ubuntu16.04 ros版本 kinetic 標定筆記本單目攝像頭 需要的準備:1、標定圖:下面這張列印到a4紙上。 2、攝像機驅動,我使用的是usb_cam,下載地址:https://github.com/ros-drivers/usb_c

ros學習apriltags2_ros

apriltags2的執行很簡單,主要就是幾個引數的設定問題記錄一下。 一、準備 1、apriltags2可以在 https://github.com/dmalyuta/apriltags2_ros.git 下載,下載後放到catkin_ws工作目錄下。 編譯:

ROS學習認識

本人準備做一個ROS學習系列文章,目的是對自己的學習經歷做一個總結,同時,也是希望能夠幫助到想要學習ROS的人。 一.ROS是什麼 提到ROS,大家應該都清楚,它是機器人作業系統英文的首寫字母縮寫(Robot Operation System),這是它的名字,那麼從它

ROS學習launch檔案編寫

1.一個簡單的launch檔案//在catkin_ws/src/下建立一個包,單獨存放launch 檔案 cd catkin_ws/src catkin_create_pkg my_launch //回到catkin_ws目錄下 catkin_make在包 my_launch

我的ROS學習路——ROS安裝

1.進入ubuntu的‘軟體與更新’(soft and update)介面,選中以下四個 main universe  restricted multiverse 如圖: 2,。在linux終端輸入 

ROS學習tf基本用法

主要細節參見wiki,這裡我寫一下它的broadcaster和listener做個記錄: tf_broadcaster.cpp: #include<ros/ros.h> #include<tf/transform_broadcaster.h> in

ROS學習 roscpp內部架構概況

wiki連結:http://wiki.ros.org/roscpp/Internals     這部分包括一個對roscpp內部架構組織高度概括的審視,從最底層開始。    1.通用哲學     roscpp的哲學是僅僅使一部分API對外可見。這意味著公共的標頭檔案不允許

ROS學習釋出訊息——Publisher_程式碼分析

//一個非常詳細的版本: //本檔名字為: publisher.cpp #include "ros/ros.h" #include "std_msgs/String.h" #include <i

ROS學習CMakelists.txt和package.xml

package.xml 當你的package裡已經包含配置檔案(package.xml),ROS能夠找到它。執行:rospack find [包名稱]。應該注意到我們剛才所建立的package.xml依賴於 roscpp 和 std_msgs.而catkin恰

ROS學習tf.2.編寫一個TF廣播器(C++)

ROS.tf2.編寫一個tf廣播器(C++)宣告:本教程來自於ROS.WIKI,本人在整理過程中可能出現一些錯誤和問題,有問題可以去檢視官網版本也可以諮詢本人1.1在接下來的兩篇教程中,我們將編寫程式碼來重現tf入門教程中的演示。之後,以下教程將重點介紹使用更高階的tf功能擴

我的ROS學習路—建立catkin的工作空間

在ubuntu終端執行以下命令 1.  source /opt/ros/kinetic/setup.bash 2.  mkdir -p ~/catakin_ws/src   連續建立兩個目錄 3.  cd  ~/catakin_ws/src   進入目錄 4.  catk