Skip to content

Commit 86b0907

Browse files
send gps data with camera request (#381)
* send gps data with camera request * Format --------- Co-authored-by: ARRYTHEBEAST <arjunkhamkar25@gmail.com>
1 parent ba6255f commit 86b0907

File tree

1 file changed

+26
-8
lines changed

1 file changed

+26
-8
lines changed

src/network/MissionControlProtocol.cpp

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -243,15 +243,33 @@ static bool validateCameraFrameRequest(const json& j) {
243243
}
244244

245245
void 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

257275
void MissionControlProtocol::sendArmIKEnabledReport(bool enabled) {

0 commit comments

Comments
 (0)