ROS 학습 노트 83(roscpp 이해 타이머)
3425 단어 ROS 학습 노트
1 타이머 란 무엇 인가
타 이 머 는 일정한 속도 로 시간 을 정 해 리 셋 함 수 를 호출 합 니 다.They are a more flexible and useful form of the ros::Rate used in the Writing a Simple Publisher and Subscriber tutorial.
Note that Timers are not a realtime thread/kernel replacement, and make no guarantees about how accurate they are, which can vary wildly because of system load/capabilities.
2 타이머 사용
타 이 머 를 만 드 는 작업 원 리 는 구독 자 를 만 드 는 것 과 매우 유사 합 니 다.
ros::Timer timer = n.createTimer(ros::Duration(0.1), timerCallback);
리 셋 함수 의 형식 은 다음 과 같 습 니 다.
void timerCallback(const ros::TimerEvent& e);
세 가지 완전한 예
ow that you've seen the basics, let's go through a larger example, with multiple Timers.
#include "ros/ros.h"
/**
* This tutorial demonstrates the use of timer callbacks.
*/
void callback1(const ros::TimerEvent&)
{
ROS_INFO("Callback 1 triggered");
}
void callback2(const ros::TimerEvent&)
{
ROS_INFO("Callback 2 triggered");
}
int main(int argc, char **argv)
{
ros::init(argc, argv, "talker");
ros::NodeHandle n;
/**
* Timers allow you to get a callback at a specified rate. Here we create
* two timers at different rates as a demonstration.
*/
ros::Timer timer1 = n.createTimer(ros::Duration(0.1), callback1);
ros::Timer timer2 = n.createTimer(ros::Duration(1.0), callback2);
ros::spin();
return 0;
}
3.2 프로그램 해석
앞의 튜 토리 얼 을 무시 하고 두 줄 의 설명 부분 만 남 깁 니 다.
ros::Timer timer1 = n.createTimer(ros::Duration(0.1), callback1);
ros::Timer timer2 = n.createTimer(ros::Duration(1.0), callback2);
여기 서 우 리 는 두 개의 타 이 머 를 만 듭 니 다.그 중 하 나 는 트리거 간격 이 100 밀리초 이 고 그 중 하 나 는 트리거 매 초 입 니 다.이 프로그램 을 실행 하려 면 다음 과 같이 출력 해 야 합 니 다.
[ INFO] 1251854032.362376000: Callback 1 triggered
[ INFO] 1251854032.462840000: Callback 1 triggered
[ INFO] 1251854032.562464000: Callback 1 triggered
[ INFO] 1251854032.662169000: Callback 1 triggered
[ INFO] 1251854032.762649000: Callback 1 triggered
[ INFO] 1251854032.862853000: Callback 1 triggered
[ INFO] 1251854032.962642000: Callback 1 triggered
[ INFO] 1251854033.063118000: Callback 1 triggered
[ INFO] 1251854033.162221000: Callback 1 triggered
[ INFO] 1251854033.262749000: Callback 1 triggered
[ INFO] 1251854033.262864000: Callback 2 triggered
[ INFO] 1251854033.362643000: Callback 1 triggered
[ INFO] 1251854033.463158000: Callback 1 triggered
...
4 The TimerEvent Structure
The ros::TimerEvent structure provides you information about the timing of the current timer. Here is its definition:
struct TimerEvent
{
Time last_expected; ///< In a perfect world, this is when the last callback should have happened
Time last_real; ///< When the last callback actually happened
Time current_expected; ///< In a perfect world, this is when the current callback should be happening
Time current_real; ///< This is when the current callback was actually called (Time::now() as of the beginning of the callback)
struct
{
WallDuration last_duration; ///< How long the last callback ran for, always in wall-clock time
} profile;
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ROS 학습 노트 82(roscpp 리 셋 함수)원본 링크:http://wiki.ros.org/roscpp_tutorials/Tutorials/UsingClassMethodsAsCallbacks 구독 자 만약 당신 에 게 간단 한 유형 이 있다 고 가정 하 세 요...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.