ros2 tips_11 rclcpp::ok() 作用

14 篇文章 0 订阅

rclcpp::ok() 是一个函数,用于检查 ROS 2 系统是否应该继续运行。该函数会检查节点是否已经被关闭(例如,用户是否按下了 Ctrl+C),或者系统是否已经发生了无法处理的错误等情况,如果没有发生这些情况,它将返回 true,表示 ROS 2 系统仍然应该继续运行。

在 ROS 2 机器人应用程序中,通常在循环中使用 rclcpp::ok() 函数来控制代码的运行。例如,如下代码中 while 循环将一直运行,直到系统发生错误或者用户按下 Ctrl+C:

while (rclcpp::ok()) {
   // 执行你的代码...
}

在上面的循环中,每次调用 rclcpp::ok() 函数都会检查 ROS 2 系统是否可以继续运行。只有当该函数返回 true 时,循环才会继续执行下去。如果该函数返回 false,则表示 ROS 2 系统已经不能再运行了,循环会停止并退出应用程序。因此,使用 rclcpp::ok() 函数可以帮助控制程序的运行状态,以及在出现错误或用户想要停止程序时进行优雅的退出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
class ArmConnect: public rclcpp::Node { public: ArmConnect(const arm_connect::TopicType &topic_param); ~ArmConnect() = default; Camera::ImageInfo& GetImageInfo(Camera::CameraNum num); std::vector<std::vector<double>>& GetPointCloudInfo(); void SaveCalibrationDataInfo(const std::string &filename); std::vector<CalibrationData::detection>& GetCalibrationDataInfo(); bool IsGetCalibrationIdInfo(); bool IsGetCakubrationDataInfo(); private: void ImageCallback(const sensor_msgs::msg::Image &msg); void PointCloudCallback(const sensor_msgs::msg::PointCloud2 &msg); void CalibrationDataCallback(const apriltag_msgs::msg::AprilTagDetectionArray &msg); private: rclcpp::Subscription<sensor_msgs::msg::Image>::SharedPtr image_subscriber_; Camera::ImageInfo camera_image_; std::mutex image_lock_; rclcpp::Subscription<sensor_msgs::msg::PointCloud2>::SharedPtr pointcloud_subscriber_; rclcpp::Publisher<sensor_msgs::msg::PointCloud2>:: SharedPtr pointcloud_publisher_; std::vector<std::vector<double>> pointcloud_vector_; pcl::PointCloud<pcl::PointXYZ>::Ptr point_cloud_; std::mutex pointcloud_lock_; rclcpp::Subscription<apriltag_msgs::msg::AprilTagDetectionArray>::SharedPtr calibrationdata_subscriber_; std::vector<CalibrationData::detection> calibrationdata_vector_; mutable bool calibrationdata_flag_ = false; mutable bool calibrationboard_flag_ = false; std::mutex Calibrationdata_lock_; int CalibrationID; }; 上述是一个类的定义,如何在main函数中给上述类中的 int CalibrationID 赋值
06-09

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值