0
点赞
收藏
分享

微信扫一扫

ROS2与C++入门教程-Topic Statistics查看话题


系列文章目录

  • ​​ROS2与C++入门教程-目录​​
  • ​​ROS2与C++入门教程-新建ros2工作空间​​
  • ​​ROS2与C++入门教程-新建ros2包​​
  • ​​ROS2与C++入门教程-编写订阅和发布​​
  • ​​ROS2与C++入门教程-编写服务端和客户端​​
  • ​​ROS2与C++入门教程-创建消息(msg)文件​​
  • ​​ROS2与C++入门教程-创建服务(srv)文件​​
  • ​​ROS2与C++入门教程-创建ros2接口​​
  • ​​ROS2与C++入门教程-使用参数​​

前言

介绍如何启用ROS 2 Topic Statistics并查看输出统计数据

步骤:

  • 下载示例talker 代码

cd dev_ws/src/cpp_pubsub/src
wget -O member_function_with_topic_statistics.cpp https://raw.githubusercontent.com/ros2/examples/master/rclcpp/topics/minimal_subscriber/member_function_with_topic_statistics.cpp

  • 编辑文件member_function_with_topic_statistics.cpp

#include <chrono>
#include <memory>

#include "rclcpp/rclcpp.hpp"
#include "rclcpp/subscription_options.hpp"

#include "std_msgs/msg/string.hpp"

class MinimalSubscriberWithTopicStatistics : public rclcpp::Node
{
public:
MinimalSubscriberWithTopicStatistics()
: Node("minimal_subscriber_with_topic_statistics")
{
// manually enable topic statistics via options
auto options = rclcpp::SubscriptionOptions();
options.topic_stats_options.state = rclcpp::TopicStatisticsState::Enable;

// configure the collection window and publish period (default 1s)
options.topic_stats_options.publish_period = std::chrono::seconds(10);

// configure the topic name (default '/statistics')
// options.topic_stats_options.publish_topic = "/topic_statistics"

auto callback = [this](std_msgs::msg::String::SharedPtr msg) {
this->topic_callback(msg);
};

subscription_ = this->create_subscription<std_msgs::msg::String>(
"topic", 10, callback, options);
}

private:
void topic_callback(const std_msgs::msg::String::SharedPtr msg) const
{
RCLCPP_INFO(this->get_logger(), "I heard: '%s'", msg->data.c_str());
}
rclcpp::Subscription<std_msgs::msg::String>::SharedPtr subscription_;
};

int main(int argc, char * argv[])
{
rclcpp::init(argc, argv);
rclcpp::spin(std::make_shared<MinimalSubscriberWithTopicStatistics>());
rclcpp::shutdown();
return 0;
}

  • 打开CMakeLists.txt文件

add_executable(listener_with_topic_statistics member_function_with_topic_statistics.cpp)
ament_target_dependencies(listener_with_topic_statistics rclcpp std_msgs)

install(TARGETS
talker
listener
listener_with_topic_statistics
DESTINATION lib/${PROJECT_NAME})

  • 使用启用统计信息的节点运行订阅者

ros2 run cpp_pubsub listener_with_topic_statistics

  • 运行talker节点

ros2 run cpp_pubsub talker

  • 终端应该每 0.5 秒开始发布信息消息,如下所示:

[INFO] [minimal_publisher]: Publishing: "Hello World: 0"
[INFO] [minimal_publisher]: Publishing: "Hello World: 1"
[INFO] [minimal_publisher]: Publishing: "Hello World: 2"
[INFO] [minimal_publisher]: Publishing: "Hello World: 3"
[INFO] [minimal_publisher]: Publishing: "Hello World: 4"

  • 侦听器将开始向控制台打印消息,从发布者当时处于的任何消息计数开始,如下所示:

[INFO] [minimal_subscriber_with_topic_statistics]: I heard: "Hello World: 10"
[INFO] [minimal_subscriber_with_topic_statistics]: I heard: "Hello World: 11"
[INFO] [minimal_subscriber_with_topic_statistics]: I heard: "Hello World: 12"
[INFO] [minimal_subscriber_with_topic_statistics]: I heard: "Hello World: 13"
[INFO] [minimal_subscriber_with_topic_statistics]: I heard: "Hello World: 14"

  • 查看话题

ros2 topic list

  • 打印出以下内容

/parameter_events
/rosout
/statistics
/topic

  • 使用RQt将其可视化

ROS2与C++入门教程-Topic Statistics查看话题_大数据

  • 查看发布话题内容

ros2 topic echo /statistics

---
measurement_source_name: minimal_subscriber_with_topic_statistics
metrics_source: message_age
unit: ms
window_start:
sec: 1594856666
nanosec: 931527366
window_stop:
sec: 1594856676
nanosec: 930797670
statistics:
- data_type: 1
data: .nan
- data_type: 3
data: .nan
- data_type: 2
data: .nan
- data_type: 5
data: 0.0
- data_type: 4
data: .nan
---
measurement_source_name: minimal_subscriber_with_topic_statistics
metrics_source: message_period
unit: ms
window_start:
sec: 1594856666
nanosec: 931527366
window_stop:
sec: 1594856676
nanosec: 930797670
statistics:
- data_type: 1
data: 499.2746365105009
- data_type: 3
data: 500.0
- data_type: 2
data: 499.0
- data_type: 5
data: 619.0
- data_type: 4
data: 0.4463309283488427
---

 

总结

以上就是今天要讲的内容,本文仅仅简单介绍了​​Topic Statistics查看话题​​使用,查看输出统计数据

举报

相关推荐

0 条评论