example.cpp
Go to the documentation of this file.
1 #include <iostream>
2 #include <chrono>
3 #include <rclcpp/rclcpp.hpp>
4 #include <random>
5 #include <cmath>
6 #include "pj_msgs/msg/dictionary.hpp"
7 #include "pj_msgs/msg/data_points.hpp"
8 
9 using namespace std::chrono_literals;
10 
11 pj_msgs::msg::DataPoint CreateDataPoint(uint16_t name_index, double time, double value)
12 {
13  pj_msgs::msg::DataPoint point;
14  point.stamp = time;
15  point.name_index = name_index;
16  point.value = value;
17  return point;
18 }
19 
20 int main(int argc, char * argv[])
21 {
22  rclcpp::init(argc, argv);
23  auto node = rclcpp::Node::make_shared("pj_test");
24 
25  auto publisher_dict = node->create_publisher<pj_msgs::msg::Dictionary>("pj_msg_dictionary",
26  rclcpp::QoS(10).transient_local());
27  auto publisher = node->create_publisher<pj_msgs::msg::DataPoints>("pj_msg_data", 10);
28 
29  std::random_device rd;
30  const uint32_t UUID = rd(); // just a random number
31 
32  pj_msgs::msg::Dictionary dictionary;
33 
34  dictionary.dictionary_uuid = UUID;
35  dictionary.names.push_back("sensor_a"); // index 0
36  dictionary.names.push_back("sensor_b"); // index 1
37  dictionary.names.push_back("sensor_c"); // index 2
38 
39  publisher_dict->publish(dictionary);
40 
41 
42  rclcpp::WallRate loop_rate(50ms);
43  double t=0;
44  while (rclcpp::ok()) {
45 
46  t += 0.1;
47  pj_msgs::msg::DataPoints msg;
48  msg.dictionary_uuid = UUID;
49  msg.samples.push_back( CreateDataPoint(0, t, std::sin(t)));
50  msg.samples.push_back( CreateDataPoint(1, t, std::cos(t)));
51  msg.samples.push_back( CreateDataPoint(2, t, 2*std::cos(t)));
52 
53  publisher->publish(msg);
54  rclcpp::spin_some(node);
55  loop_rate.sleep();
56  }
57  rclcpp::shutdown();
58  return 0;
59 }
pj_msgs::msg::DataPoint CreateDataPoint(uint16_t name_index, double time, double value)
Definition: example.cpp:11
int main(int argc, char *argv[])
Definition: example.cpp:20


plotjuggler_msgs
Author(s):
autogenerated on Fri May 15 2020 03:21:51