MCPcopy Create free account
hub / github.com/CopterExpress/clover / getTelemetry

Function getTelemetry

clover/src/simple_offboard.cpp:235–318  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

233#define TIMEOUT(msg, timeout) (msg.header.stamp.isZero() || (ros::Time::now() - msg.header.stamp > timeout))
234
235bool getTelemetry(GetTelemetry::Request& req, GetTelemetry::Response& res)
236{
237 ros::Time stamp = ros::Time::now();
238
239 if (req.frame_id.empty())
240 req.frame_id = local_frame;
241
242 res.frame_id = req.frame_id;
243 res.x = NAN;
244 res.y = NAN;
245 res.z = NAN;
246 res.lat = NAN;
247 res.lon = NAN;
248 res.alt = NAN;
249 res.vx = NAN;
250 res.vy = NAN;
251 res.vz = NAN;
252 res.roll = NAN;
253 res.pitch = NAN;
254 res.yaw = NAN;
255 res.roll_rate = NAN;
256 res.pitch_rate = NAN;
257 res.yaw_rate = NAN;
258 res.voltage = NAN;
259 res.cell_voltage = NAN;
260
261 if (!TIMEOUT(state, state_timeout)) {
262 res.connected = state.connected;
263 res.armed = state.armed;
264 res.mode = state.mode;
265 }
266
267 try {
268 waitTransform(req.frame_id, fcu_frame, stamp, telemetry_transform_timeout);
269 auto transform = tf_buffer.lookupTransform(req.frame_id, fcu_frame, stamp);
270 res.x = transform.transform.translation.x;
271 res.y = transform.transform.translation.y;
272 res.z = transform.transform.translation.z;
273
274 double yaw, pitch, roll;
275 tf2::getEulerYPR(transform.transform.rotation, yaw, pitch, roll);
276 res.yaw = yaw;
277 res.pitch = pitch;
278 res.roll = roll;
279 } catch (const tf2::TransformException& e) {
280 ROS_DEBUG("%s", e.what());
281 }
282
283 if (!TIMEOUT(velocity, velocity_timeout)) {
284 try {
285 // transform velocity
286 waitTransform(req.frame_id, fcu_frame, velocity.header.stamp, telemetry_transform_timeout);
287 Vector3Stamped vec, vec_out;
288 vec.header.stamp = velocity.header.stamp;
289 vec.header.frame_id = velocity.header.frame_id;
290 vec.vector = velocity.twist.linear;
291 tf_buffer.transform(vec, vec_out, req.frame_id);
292

Callers

nothing calls this directly

Calls 1

waitTransformFunction · 0.85

Tested by

no test coverage detected