ROS學習之 cpp時間
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.睡眠和比率
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.壁鐘時間
如: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