ROS 2 tips_3 回调机制

例如如下的话题回调函数

void robot_status_callback_(const example_ros2_interfaces::msg::RobotStatus::SharedPtr msg)
  {
    RCLCPP_INFO(this->get_logger(), "收到状态数据位置:%f 状态:%d", msg->pose ,msg->status);
  }  

并没有写调用 怎么会输出?

  • 这里的回调函数 robot_status_callback_ 是通过 ROS 2 的回调机制被自动地调用的,而不是手动进行调用的。在该程序中,当 ROS 2 框架接收到名为 “robot_status” 的消息时,就会触发 robot_status_callback_ 回调函数,并将消息传递给该函数。

  • 回调函数中的输出语句 RCLCPP_INFO(this->get_logger(), “收到状态数据位置:%f 状态:%d”, msg->pose ,msg->status); 使用了 ROS 2 的日志记录工具 RCLCPP_INFO,用于向控制台输出日志信息。在该程序中,当收到机器人状态信息时,就会通过 RCLCPP_INFO 输出当前机器人状态的位置和状态值。

  • 由于 RCLCPP_INFO 函数是 ROS 2 框架提供的日志记录接口,其内部实现会将日志信息存储在缓冲区中,等待ROS 2框架将缓冲区中的日志信息输出到控制台上。因此,在程序中调用 RCLCPP_INFO 函数并不代表日志信息已经立即输出到控制台,而是需要等待 ROS 2 框架将缓冲区中的日志信息输出到控制台上才能看到输出结果。

综上所述,这段代码中的输出是通过 ROS 2 框架日志记录机制实现的,在 ROS 2 框架接收到机器人状态消息时,自动调用 robot_status_callback_ 回调函数并输出日志信息,而不是手动调用实现的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值