#include <ros/ros.h>
int main(int argc, char** argv) {
ros::init(argc, argv, "sensor_check_node");
ros::NodeHandle nh;
std::string sensor_topic = "/your_sensor_topic";
bool is_sensor_online = false;
while (ros::ok()) {
// 检查传感器是否在线
if (!ros::master::check()) {
ROS_WARN("Sensor is offline!");
is_sensor_online = false;
} else {
if (!is_sensor_online) {
ROS_INFO("Sensor is online now.");
// 在这里进行相关操作,例如重新订阅该传感器的话题
// ...
is_sensor_online = true;
}
}
ros::spinOnce();
ros::Duration(1.0).sleep(); // 等待1秒钟后再次检查
}
return 0;
}
接下来代码中出现了一个名为sensor_check_node的节点,并在主循环中定期调用ros:;master:;check()函数来检测传感器在线是否创建。如果传感器不在线,输出相应的报警信息;如果传感器重新上线,输出相应的提示信息并执行需要进行的操作。
请注意,在代码中您需要将“/your_sensor_topic”替换为实际要检测的传感器主题名称。
另外,请确保已经正确配置ROS网络并启动了所需的要点和话题。