常规API操作
阻塞线程spin
可以阻塞当前的线程。
C++对应API
Python对应API
频率操作Rate
可以按照一定的频率操作循环执行。
C++对应API
| ros::Rate rate(10);
while(true) {
rate.sleep();
}
|
Python对应API
| rate = rospy.Rate(10)
while True:
rate.sleep()
|
Tip
rate中的参数10,代表在while循环中,每秒钟运行10次。
节点状态判断
-
可以判断当前节点是否停止
-
可以按照一定的频率操作循环执行。
C++对应API
Python对应API
C++完整示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 | #include <iostream>
#include "ros/ros.h"
using namespace std;
int main(int argc, char **argv) {
// 初始化ros节点
string nodeName = "hello_cpp";
ros::init(argc, argv, nodeName);
//创建节点
ros::NodeHandle node;
//频率操作
ros::Rate rate(10);
while (ros::ok()) {
cout << "hello ros cpp node" << endl;
rate.sleep();
}
//阻塞线程
ros::spin();
return 0;
}
|
Python完整示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 | #!/usr/bin/env python
# coding:utf-8
import rospy
if __name__ == '__main__':
node_name = "hello_py"
rospy.init_node(node_name)
rate = rospy.Rate(10)
while not rospy.is_shutdown():
print "hello ros python node"
rate.sleep()
# 阻塞线程
rospy.spin()
|