| 68 | using namespace open_ptrack::bpe; |
| 69 | |
| 70 | void |
| 71 | trackingCallback(const opt_msgs::TrackArray::ConstPtr& tracking_msg) |
| 72 | { |
| 73 | if (facetracksflag == 1) |
| 74 | { |
| 75 | return; |
| 76 | } |
| 77 | /// Create JSON-formatted message: |
| 78 | Jzon::Object root, header, stamp; |
| 79 | |
| 80 | /// Add header (84 characters): |
| 81 | header.Add("seq", int(tracking_msg->header.seq)); |
| 82 | stamp.Add("sec", int(tracking_msg->header.stamp.sec)); |
| 83 | stamp.Add("nsec", int(tracking_msg->header.stamp.nsec)); |
| 84 | header.Add("stamp", stamp); |
| 85 | std::string camera_name = tracking_msg->header.frame_id; |
| 86 | if (strcmp(camera_name.substr(0,1).c_str(), "/") == 0) // Remove bar at the beginning |
| 87 | { |
| 88 | camera_name = camera_name.substr(1, camera_name.size() - 1); |
| 89 | } |
| 90 | header.Add("frame_id", camera_name); |
| 91 | root.Add("header", header); |
| 92 | |
| 93 | /// Add tracks array: |
| 94 | // >50 characters for every track |
| 95 | Jzon::Array tracks; |
| 96 | for (unsigned int i = 0; i < tracking_msg->tracks.size(); i++) |
| 97 | { |
| 98 | Jzon::Object current_track; |
| 99 | current_track.Add("id", tracking_msg->tracks[i].id); |
| 100 | current_track.Add("x", tracking_msg->tracks[i].x); |
| 101 | current_track.Add("y", tracking_msg->tracks[i].y); |
| 102 | current_track.Add("height", tracking_msg->tracks[i].height); |
| 103 | current_track.Add("age", tracking_msg->tracks[i].age); |
| 104 | current_track.Add("confidence", tracking_msg->tracks[i].confidence); |
| 105 | |
| 106 | tracks.Add(current_track); |
| 107 | } |
| 108 | root.Add("people_tracks", tracks); |
| 109 | |
| 110 | /// Convert JSON object to string: |
| 111 | Jzon::Format message_format = Jzon::StandardFormat; |
| 112 | message_format.indentSize = json_indent_size; |
| 113 | message_format.newline = json_newline; |
| 114 | message_format.spacing = json_spacing; |
| 115 | message_format.useTabs = json_use_tabs; |
| 116 | Jzon::Writer writer(root, message_format); |
| 117 | writer.Write(); |
| 118 | std::string json_string = writer.GetResult(); |
| 119 | // std::cout << "String sent: " << json_string << std::endl; |
| 120 | |
| 121 | /// Copy string to message buffer: |
| 122 | udp_data.si_num_byte_ = json_string.length()+1; |
| 123 | char buf[udp_data.si_num_byte_]; |
| 124 | for (unsigned int i = 0; i < udp_data.si_num_byte_; i++) |
| 125 | { |
| 126 | buf[i] = 0; |
| 127 | } |
nothing calls this directly
no test coverage detected