@@ -243,15 +243,33 @@ static bool validateCameraFrameRequest(const json& j) {
243243}
244244
245245void MissionControlProtocol::handleCameraFrameRequest (const json& j) {
246+ auto gps = gps::readGPSCoords ();
247+ auto imu = robot::readIMU ();
246248 CameraID cam = j[" camera" ];
247- auto camDP = robot::readCamera (cam);
248- if (camDP) {
249- auto data = camDP.getData ();
250- cv::Mat frame = data.first ;
251- std::string b64_data = base64::encodeMat (frame, " .jpg" );
252- json msg = {{" type" , CAMERA_FRAME_REP_TYPE}, {" camera" , cam}, {" data" , b64_data}};
253- _server.sendJSON (Constants::MC_PROTOCOL_NAME, msg);
254- }
249+ auto camDP = robot::readCamera (cam);
250+
251+ Eigen::Quaterniond quat = imu.getData ();
252+ double lon = 0 , lat = 0 , alt = 0 ;
253+ double w = 0 , x = 0 , y = 0 , z = 0 ;
254+ if (gps.isValid ()) {
255+ lon = gps.getData ().lon ;
256+ lat = gps.getData ().lat ;
257+ alt = gps.getData ().alt ;
258+ w = quat.w ();
259+ x = quat.x ();
260+ y = quat.y ();
261+ z = quat.z ();
262+ }
263+
264+ if (camDP) {
265+ auto data = camDP.getData ();
266+ cv::Mat frame = data.first ;
267+ std::string b64_data = base64::encodeMat (frame, " .jpg" );
268+ json msg = {{" type" , CAMERA_FRAME_REP_TYPE}, {" camera" , cam}, {" data" , b64_data},
269+ {" orientW" , w}, {" orientX" , x}, {" orientY" , y}, {" orientZ" , z},
270+ {" lon" , lon}, {" lat" , lat}, {" alt" , alt}};
271+ _server.sendJSON (Constants::MC_PROTOCOL_NAME, msg);
272+ }
255273}
256274
257275void MissionControlProtocol::sendArmIKEnabledReport (bool enabled) {
0 commit comments