修改了上传位置

This commit is contained in:
cxf 2026-02-02 10:41:20 +08:00
parent da6d257e30
commit d79c426485
11 changed files with 178 additions and 126 deletions

View File

@ -5,6 +5,7 @@ import static com.aros.apron.tools.Utils.getIDJIErrorMsg;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@ -204,20 +205,32 @@ public abstract class BaseManager {
final FlightTaskProgress.Data.Output.Ext ext = new FlightTaskProgress.Data.Output.Ext(); final FlightTaskProgress.Data.Output.Ext ext = new FlightTaskProgress.Data.Output.Ext();
ext.setCurrent_waypoint_index(Movement.getInstance().getTask_current_waypoint_index()); ext.setCurrent_waypoint_index(Movement.getInstance().getTask_current_waypoint_index());
ext.setFlight_id(PreferenceUtils.getInstance().getFlightId()); ext.setFlight_id(PreferenceUtils.getInstance().getFlightId());
//媒体文件数量
ext.setMedia_count(Movement.getInstance().getTask_media_count()); ext.setMedia_count(Movement.getInstance().getTask_media_count());
ext.setTrack_id(Movement.getInstance().getTrack_id()); ext.setTrack_id(Movement.getInstance().getTrack_id());
ext.setWayline_id(Movement.getInstance().getTask_wayline_id()); ext.setWayline_id(Movement.getInstance().getTask_wayline_id());
ext.setWayline_mission_state(Movement.getInstance().getTask_wayline_mission_state()); ext.setWayline_mission_state(Movement.getInstance().getTask_wayline_mission_state());
final FlightTaskProgress.Data.Output.Progress progress = new FlightTaskProgress.Data.Output.Progress(); final FlightTaskProgress.Data.Output.Progress progress = new FlightTaskProgress.Data.Output.Progress();
LogUtil.log(TAG,"CurrentWayline"+CurrentWayline.getInstance().getWaypoints()+"size"+CurrentWayline.getInstance().getWaypoints().size()
+"getTask_wayline_mission_state"+Movement.getInstance().getTask_wayline_mission_state());
if (CurrentWayline.getInstance().getWaypoints() != null if (CurrentWayline.getInstance().getWaypoints() != null
&& CurrentWayline.getInstance().getWaypoints().size() > 0 && CurrentWayline.getInstance().getWaypoints().size() > 0
&& Movement.getInstance().getTask_wayline_mission_state() == 6) { && Movement.getInstance().getTask_wayline_mission_state() == 6) {
//这个没执行到
progress.setPercent((100 * (Movement.getInstance().getCurrentWaypointIndex() + 1) progress.setPercent((100 * (Movement.getInstance().getCurrentWaypointIndex() + 1)
/ CurrentWayline.getInstance().getWaypoints().size())); / CurrentWayline.getInstance().getWaypoints().size()));
} }
progress.setCurrent_step(Movement.getInstance().getTask_current_step()); progress.setCurrent_step(Movement.getInstance().getTask_current_step());
if (Movement.getInstance().isMissionFinish1()) { if (Movement.getInstance().isMissionFinish1()) {
// 是结束状态 查完断点再发 // 是结束状态 查完断点再发
WaypointMissionManager.getInstance().queryBreakPointInfoFromAircraft( WaypointMissionManager.getInstance().queryBreakPointInfoFromAircraft(
@ -264,6 +277,7 @@ public abstract class BaseManager {
breakPoint.setLatitude(breakPointInfo.getLocation().getLatitude()); breakPoint.setLatitude(breakPointInfo.getLocation().getLatitude());
breakPoint.setLongitude(breakPointInfo.getLocation().getLongitude()); breakPoint.setLongitude(breakPointInfo.getLocation().getLongitude());
breakPoint.setProgress(Movement.getInstance().getTask_progress()); breakPoint.setProgress(Movement.getInstance().getTask_progress());
breakPoint.setState(Movement.getInstance().getState()); breakPoint.setState(Movement.getInstance().getState());
breakPoint.setWayline_id(Movement.getInstance().getTask_wayline_id()); breakPoint.setWayline_id(Movement.getInstance().getTask_wayline_id());
@ -380,6 +394,7 @@ public abstract class BaseManager {
Movement.getInstance().setHeight(breakPointInfo.getLocation().getAltitude()); Movement.getInstance().setHeight(breakPointInfo.getLocation().getAltitude());
Movement.getInstance().setTask_latitude(breakPointInfo.getLocation().getLatitude()); Movement.getInstance().setTask_latitude(breakPointInfo.getLocation().getLatitude());
Movement.getInstance().setTask_longitude(breakPointInfo.getLocation().getLongitude()); Movement.getInstance().setTask_longitude(breakPointInfo.getLocation().getLongitude());
Movement.getInstance().setTask_progress(breakPointInfo.getSegmentProgress()); Movement.getInstance().setTask_progress(breakPointInfo.getSegmentProgress());
Movement.getInstance().setTask_state(0); Movement.getInstance().setTask_state(0);
Movement.getInstance().setTask_wayline_id(breakPointInfo.getWaylineID()); Movement.getInstance().setTask_wayline_id(breakPointInfo.getWaylineID());

View File

@ -6,6 +6,7 @@ import android.os.Looper;
import android.util.Log; import android.util.Log;
import com.aros.apron.app.ApronApp; import com.aros.apron.app.ApronApp;
import com.aros.apron.base.BaseManager;
import com.aros.apron.constant.AMSConfig; import com.aros.apron.constant.AMSConfig;
import com.aros.apron.constant.Constant; import com.aros.apron.constant.Constant;
import com.aros.apron.entity.ApronExecutionStatus; import com.aros.apron.entity.ApronExecutionStatus;
@ -31,7 +32,7 @@ import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallbackExtended; import org.eclipse.paho.client.mqttv3.MqttCallbackExtended;
import org.eclipse.paho.client.mqttv3.MqttMessage; import org.eclipse.paho.client.mqttv3.MqttMessage;
public class MqttCallBack implements MqttCallbackExtended { public class MqttCallBack extends BaseManager implements MqttCallbackExtended {
private String TAG = "MqttCallBack"; private String TAG = "MqttCallBack";
@ -141,7 +142,7 @@ public class MqttCallBack implements MqttCallbackExtended {
LogUtil.log(TAG, "收到:航线" + jsonString); LogUtil.log(TAG, "收到:航线" + jsonString);
//设置modecode //设置modecode
Movement.getInstance().setMode_code(1); Movement.getInstance().setMode_code(1);
OSDManager.getInstance().pushFlightAttitude(); sendFlightTaskProgress2Server();
//设置标志为 //设置标志为
Movement.getInstance().setFlightmode(1); Movement.getInstance().setFlightmode(1);
MissionV3Manager.getInstance().taskExecute(message); MissionV3Manager.getInstance().taskExecute(message);
@ -159,6 +160,7 @@ public class MqttCallBack implements MqttCallbackExtended {
LogUtil.log(TAG, "收到:返航" + jsonString); LogUtil.log(TAG, "收到:返航" + jsonString);
//自动返航 (如果调用方法失败了 这个设置就有一个问题但是为了方便看懂我就放这里了没放成功的回调里面) //自动返航 (如果调用方法失败了 这个设置就有一个问题但是为了方便看懂我就放这里了没放成功的回调里面)
Movement.getInstance().setMode_code(9); Movement.getInstance().setMode_code(9);
sendFlightTaskProgress2Server();
FlightManager.getInstance().startGoHome(message); FlightManager.getInstance().startGoHome(message);
break; break;
case Constant.RETURN_HOME_CANCEL: case Constant.RETURN_HOME_CANCEL:
@ -185,7 +187,7 @@ public class MqttCallBack implements MqttCallbackExtended {
LogUtil.log(TAG, "收到:一键起飞" + jsonString); LogUtil.log(TAG, "收到:一键起飞" + jsonString);
//设置modecode //设置modecode
Movement.getInstance().setMode_code(1); Movement.getInstance().setMode_code(1);
OSDManager.getInstance().pushFlightAttitude(); sendFlightTaskProgress2Server();
//设置标志为 //设置标志为
Movement.getInstance().setFlightmode(2); Movement.getInstance().setFlightmode(2);

View File

@ -110,6 +110,7 @@ public class MessageDown {
private float width; private float width;
public float getWidth() { public float getWidth() {
return width; return width;
} }

View File

@ -96,17 +96,15 @@ public class FlightManager extends BaseManager {
LogUtil.log(TAG,"遥控器断开连接"); LogUtil.log(TAG,"遥控器断开连接");
// 飞机未连接时设置未连接状态 // 飞机未连接时设置未连接状态
Movement.getInstance().setMode_code(14); Movement.getInstance().setMode_code(14);
OSDManager.getInstance().pushFlightAttitude(); sendFlightTaskProgress2Server();
Movement.getInstance().setMissionFinish(true); Movement.getInstance().setMissionFinish(true);
}else{ }else{
LogUtil.log(TAG,"setMode_code1(0)");
//连上就待机 //连上就待机
Movement.getInstance().setMissionFinish(false); Movement.getInstance().setMissionFinish(false);
Movement.getInstance().setMode_code(0); Movement.getInstance().setMode_code(0);
OSDManager.getInstance().pushFlightAttitude(); sendFlightTaskProgress2Server();
} }
} }
@ -114,10 +112,11 @@ public class FlightManager extends BaseManager {
}); });
//重新复制一下如果一直断开这个回调会不执行 //重新复制一下如果一直断开这个回调会不执行
if(isConnect){ if(isConnect){
LogUtil.log(TAG,"setMode_code2(0)");
Movement.getInstance().setMode_code(0); Movement.getInstance().setMode_code(0);
sendFlightTaskProgress2Server();
}else{ }else{
Movement.getInstance().setMode_code(14); Movement.getInstance().setMode_code(14);
sendFlightTaskProgress2Server();
} }
@ -191,12 +190,10 @@ public class FlightManager extends BaseManager {
}else if(Movement.getInstance().getFlightmode()==2){ }else if(Movement.getInstance().getFlightmode()==2){
Movement.getInstance().setMode_code(17); Movement.getInstance().setMode_code(17);
} }
sendFlightTaskProgress2Server();
}else{ }else{
LogUtil.log(TAG,"setMode_code3(0)");
Movement.getInstance().setMode_code(0); Movement.getInstance().setMode_code(0);
OSDManager.getInstance().pushFlightAttitude(); sendFlightTaskProgress2Server();
} }
isFlying = newValue; isFlying = newValue;
@ -459,8 +456,8 @@ public class FlightManager extends BaseManager {
case POI: case POI:
Movement.getInstance().setMode_code(20); Movement.getInstance().setMode_code(20);
break; break;
} }
sendFlightTaskProgress2Server();
} }
} }
}); });
@ -992,6 +989,7 @@ public class FlightManager extends BaseManager {
// 上传媒体文件 // 上传媒体文件
SystemManager.getInstance().upLoadMedia(MqttManager.getInstance().mqttAndroidClient); SystemManager.getInstance().upLoadMedia(MqttManager.getInstance().mqttAndroidClient);
} }
// 避免在下次起飞时触发视觉识别 // 避免在下次起飞时触发视觉识别
PreferenceUtils.getInstance().setNeedTriggerApronArucoLand(false); PreferenceUtils.getInstance().setNeedTriggerApronArucoLand(false);
PreferenceUtils.getInstance().setNeedTriggerAlterArucoLand(false); PreferenceUtils.getInstance().setNeedTriggerAlterArucoLand(false);
@ -1042,13 +1040,13 @@ public class FlightManager extends BaseManager {
//取消返航 //取消返航
public void stopGoHome(MessageDown message) { public void stopGoHome(MessageDown message) {
Boolean isConnect = KeyManager.getInstance().getValue(createKey(FlightControllerKey.KeyConnection)); Boolean isConnect = KeyManager.getInstance().getValue(createKey(FlightControllerKey.KeyConnection));
if (isConnect != null && isConnect) { if (isConnect != null && isConnect) {
KeyManager.getInstance().performAction(createKey(FlightControllerKey.KeyStopGoHome), new CommonCallbacks.CompletionCallbackWithParam<EmptyMsg>() { KeyManager.getInstance().performAction(createKey(FlightControllerKey.KeyStopGoHome), new CommonCallbacks.CompletionCallbackWithParam<EmptyMsg>() {
@Override @Override
public void onSuccess(EmptyMsg emptyMsg) { public void onSuccess(EmptyMsg emptyMsg) {
Movement.getInstance().setMode_code(3); Movement.getInstance().setMode_code(3);
sendFlightTaskProgress2Server();
sendMsg2Server( message); sendMsg2Server( message);
} }

View File

@ -38,20 +38,15 @@ public class FlightTaskProgressManager extends BaseManager {
// sendFlightTaskProgress2Server(); // sendFlightTaskProgress2Server();
// //
// } // }
//只要一个满足就上报 //只要一个满足就上报
if (Movement.getInstance().isPlaneWing() || Movement.getInstance().isMotorsOn()) { if (Movement.getInstance().isPlaneWing() || Movement.getInstance().isMotorsOn()) {
sendFlightTaskProgress2Server(); sendFlightTaskProgress2Server();
} }
if (Movement.getInstance().isMissionFinish1()) { if (Movement.getInstance().isMissionFinish1()) {
sendFlightTaskProgress2Server(); sendFlightTaskProgress2Server();
handler.removeCallbacks(this); handler.removeCallbacks(this);
return; return;
} }
// 始终基于实际执行时间来调度 // 始终基于实际执行时间来调度
handler.postDelayed(this, INTERVAL); handler.postDelayed(this, INTERVAL);
} }

View File

@ -176,7 +176,7 @@ public class FlyToPointManager extends BaseManager {
sendFailMsg2Server(message,"指点航线上传失败:"+ Utils.getIDJIErrorMsg(error)); sendFailMsg2Server(message,"指点航线上传失败:"+ Utils.getIDJIErrorMsg(error));
//待机 //待机
Movement.getInstance().setMode_code(0); Movement.getInstance().setMode_code(0);
OSDManager.getInstance().pushFlightAttitude(); sendFlightTaskProgress2Server();
} }
}); });
} }
@ -204,6 +204,7 @@ public class FlyToPointManager extends BaseManager {
//指令飞行( 指点前置不需要起飞准备这些因为没有指点起飞的航线) //指令飞行( 指点前置不需要起飞准备这些因为没有指点起飞的航线)
Movement.getInstance().setMode_code(17); Movement.getInstance().setMode_code(17);
sendFlightTaskProgress2Server();
} }
@Override @Override
@ -211,7 +212,7 @@ public class FlyToPointManager extends BaseManager {
sendFailMsg2Server(message,"指点航线执行失败:" + new Gson().toJson(error)); sendFailMsg2Server(message,"指点航线执行失败:" + new Gson().toJson(error));
//待机 //待机
Movement.getInstance().setMode_code(0); Movement.getInstance().setMode_code(0);
OSDManager.getInstance().pushFlightAttitude(); sendFlightTaskProgress2Server();
} }
}; };

View File

@ -19,6 +19,7 @@ import com.amazonaws.services.s3.model.ProgressListener;
import com.amazonaws.services.s3.model.PutObjectRequest; import com.amazonaws.services.s3.model.PutObjectRequest;
import com.aros.apron.base.BaseManager; import com.aros.apron.base.BaseManager;
import com.aros.apron.entity.ApronExecutionStatus; import com.aros.apron.entity.ApronExecutionStatus;
import com.aros.apron.entity.Movement;
import com.aros.apron.tools.LogUtil; import com.aros.apron.tools.LogUtil;
import com.aros.apron.tools.PreferenceUtils; import com.aros.apron.tools.PreferenceUtils;
import com.autonavi.base.amap.mapcore.FileUtil; import com.autonavi.base.amap.mapcore.FileUtil;
@ -140,6 +141,9 @@ public class MediaManager extends BaseManager {
if (mState == MediaFileListState.UP_TO_DATE) { if (mState == MediaFileListState.UP_TO_DATE) {
mediaFiles = mediaFiles =
MediaDataCenter.getInstance().getMediaManager().getMediaFileListData().getData(); MediaDataCenter.getInstance().getMediaManager().getMediaFileListData().getData();
//倒是看会不会上传
Movement.getInstance().setTask_media_count(mediaFiles.size());
if (mediaFiles != null&&mediaFiles.size()>0) { if (mediaFiles != null&&mediaFiles.size()>0) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
pullOriginalMediaFileFromCamera(); pullOriginalMediaFileFromCamera();

View File

@ -601,7 +601,7 @@ public class MissionV3Manager extends BaseManager {
//自主起飞 //自主起飞
Movement.getInstance().setMode_code(4); Movement.getInstance().setMode_code(4);
OSDManager.getInstance().pushFlightAttitude(); sendFlightTaskProgress2Server();
Movement.getInstance().setTask_current_step(22); Movement.getInstance().setTask_current_step(22);
startMission(message); startMission(message);
@ -630,7 +630,7 @@ public class MissionV3Manager extends BaseManager {
} else { } else {
//待机 //待机
Movement.getInstance().setMode_code(0); Movement.getInstance().setMode_code(0);
OSDManager.getInstance().pushFlightAttitude(); sendFlightTaskProgress2Server();
sendEvent2Server("航线第" + pushKMZFileTimes + "次上传失败,直接关机", 2); sendEvent2Server("航线第" + pushKMZFileTimes + "次上传失败,直接关机", 2);
TaskFailManager.getInstance().sendTaskFailMsg2Server(-1); TaskFailManager.getInstance().sendTaskFailMsg2Server(-1);
@ -702,7 +702,7 @@ public class MissionV3Manager extends BaseManager {
//待机 //待机
Movement.getInstance().setMode_code(0); Movement.getInstance().setMode_code(0);
OSDManager.getInstance().pushFlightAttitude(); sendFlightTaskProgress2Server();
sendEvent2Server("航线第" + startMissionFailTimes + "次开始失败,直接关机:" + "---" + new Gson().toJson(error) + "--" + Movement.getInstance().getQuality(), 2); sendEvent2Server("航线第" + startMissionFailTimes + "次开始失败,直接关机:" + "---" + new Gson().toJson(error) + "--" + Movement.getInstance().getQuality(), 2);
TaskFailManager.getInstance().sendTaskFailMsg2Server(-1); TaskFailManager.getInstance().sendTaskFailMsg2Server(-1);

View File

@ -68,10 +68,14 @@ public class OSDManager extends BaseManager {
} }
lastExecuteTime = now; lastExecuteTime = now;
Boolean isConnect = KeyManager.getInstance().getValue(createKey(FlightControllerKey.KeyConnection)); Boolean isConnect = KeyManager.getInstance().getValue(createKey(FlightControllerKey.KeyConnection));
if (isConnect != null && isConnect && !Movement.getInstance().isMissionFinish()) { if (!Movement.getInstance().isMissionFinish()) {
pushFlightAttitude(); if (isConnect != null && isConnect) {
}else{ pushFlightAttitude();
LogUtil.log(TAG,"osd stop:flight controller is null"); } else {
LogUtil.log(TAG, "osd stop:flight controller is null");
}
} else {
LogUtil.log(TAG, "osd stop:flight controller is null");
} }
// 始终基于实际执行时间来调度 // 始终基于实际执行时间来调度
handler.postDelayed(this, INTERVAL); handler.postDelayed(this, INTERVAL);

View File

@ -343,7 +343,7 @@ public class TakeOffToPointManager extends BaseManager {
public void onSuccess() { public void onSuccess() {
//起飞准备完毕 //起飞准备完毕
Movement.getInstance().setMode_code(2); Movement.getInstance().setMode_code(2);
sendFlightTaskProgress2Server();
sendEvent2Server("航线上传成功,准备执行任务", 1); sendEvent2Server("航线上传成功,准备执行任务", 1);
isPushKMZSuccess = true; isPushKMZSuccess = true;
mainHandler.postDelayed(new Runnable() { mainHandler.postDelayed(new Runnable() {
@ -354,7 +354,7 @@ public class TakeOffToPointManager extends BaseManager {
*/ */
//自主起飞 //自主起飞
Movement.getInstance().setMode_code(4); Movement.getInstance().setMode_code(4);
OSDManager.getInstance().pushFlightAttitude(); sendFlightTaskProgress2Server();
Movement.getInstance().setTask_current_step(22); Movement.getInstance().setTask_current_step(22);
startMission(message); startMission(message);
pushKMZFileTimes = 0; pushKMZFileTimes = 0;
@ -382,7 +382,7 @@ public class TakeOffToPointManager extends BaseManager {
sendEvent2Server("航线第" + pushKMZFileTimes + "次上传失败,直接关机",2); sendEvent2Server("航线第" + pushKMZFileTimes + "次上传失败,直接关机",2);
//待机 //待机
Movement.getInstance().setMode_code(0); Movement.getInstance().setMode_code(0);
OSDManager.getInstance().pushFlightAttitude(); sendFlightTaskProgress2Server();
TaskFailManager.getInstance().sendTaskFailMsg2Server(-1); TaskFailManager.getInstance().sendTaskFailMsg2Server(-1);
} }
@ -452,7 +452,7 @@ public class TakeOffToPointManager extends BaseManager {
if (!Movement.getInstance().isPlaneWing()) { if (!Movement.getInstance().isPlaneWing()) {
//待机 //待机
Movement.getInstance().setMode_code(0); Movement.getInstance().setMode_code(0);
OSDManager.getInstance().pushFlightAttitude(); sendFlightTaskProgress2Server();
sendEvent2Server("航线第" + startMissionFailTimes + "次开始失败,直接关机:" + "---" + new Gson().toJson(error) + "--" + Movement.getInstance().getQuality(),2); sendEvent2Server("航线第" + startMissionFailTimes + "次开始失败,直接关机:" + "---" + new Gson().toJson(error) + "--" + Movement.getInstance().getQuality(),2);
TaskFailManager.getInstance().sendTaskFailMsg2Server(-1); TaskFailManager.getInstance().sendTaskFailMsg2Server(-1);

View File

@ -1,14 +1,12 @@
package com.aros.apron.tools;
package com.aros.apron.tools;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import com.aros.apron.constant.AMSConfig; import com.aros.apron.constant.AMSConfig;
import com.aros.apron.entity.ArucoMarker; import com.aros.apron.entity.ArucoMarker;
import com.aros.apron.entity.ArucoMarkerDimensions; import com.aros.apron.entity.ArucoMarkerDimensions;
import com.aros.apron.entity.Movement; import com.aros.apron.entity.Movement;
import com.aros.apron.manager.AlternateLandingManager; import com.aros.apron.manager.AlternateLandingManager;
import org.opencv.aruco.Aruco; import org.opencv.aruco.Aruco;
import org.opencv.aruco.Dictionary; import org.opencv.aruco.Dictionary;
import org.opencv.calib3d.Calib3d; import org.opencv.calib3d.Calib3d;
@ -298,63 +296,6 @@ public class ApronArucoDetect {
if (Movement.getInstance().getElevation() <= 1.5 if (Movement.getInstance().getElevation() <= 1.5
|| Movement.getInstance().getUltrasonicHeight() < 15) { || Movement.getInstance().getUltrasonicHeight() < 15) {
if (isDoublePayload) { if (isDoublePayload) {
if (mFindArucoList.isEmpty()) {
for (int i = 0; i < idArray.length; i++) {
if (idArray[i] == 21) {
detectedSmallMarkers = true;
detectedSmallMarkerId = 21;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return;
}
if (idArray[i] == 22 && detectedSmallMarkerId != 21) {
detectedSmallMarkers = true;
detectedSmallMarkerId = 22;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return;
}
if (idArray[i] == 23 && detectedSmallMarkerId != 21 && detectedSmallMarkerId != 22) {
detectedSmallMarkers = true;
detectedSmallMarkerId = 23;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return;
}
if (idArray[i] == 24 && detectedSmallMarkerId != 21 && detectedSmallMarkerId != 22 && detectedSmallMarkerId != 23) {
detectedSmallMarkers = true;
detectedSmallMarkerId = 24;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return;
}
if (idArray[i] == 19 && detectedSmallMarkerId != 21 && detectedSmallMarkerId != 22 && detectedSmallMarkerId != 23 && detectedSmallMarkerId != 24) {
detectedSmallMarkers = true;
detectedSmallMarkerId = 19;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return;
}
if (idArray[i] == 20 && detectedSmallMarkerId != 21 && detectedSmallMarkerId != 22 && detectedSmallMarkerId != 23 && detectedSmallMarkerId != 24 && detectedSmallMarkerId != 19) {
detectedSmallMarkers = true;
detectedSmallMarkerId = 20;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return;
}
if (idArray[i] == 17 && detectedSmallMarkerId != 21 && detectedSmallMarkerId != 22 && detectedSmallMarkerId != 23 && detectedSmallMarkerId != 24 && detectedSmallMarkerId != 19 && detectedSmallMarkerId != 20) {
detectedSmallMarkers = true;
detectedSmallMarkerId = 17;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return;
}
if (idArray[i] == 18 && detectedSmallMarkerId != 21 && detectedSmallMarkerId != 22 && detectedSmallMarkerId != 23 && detectedSmallMarkerId != 24 && detectedSmallMarkerId != 19 && detectedSmallMarkerId != 20 && detectedSmallMarkerId != 17) {
detectedSmallMarkers = true;
detectedSmallMarkerId = 18;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return;
}
}
}
} else {
if (mFindArucoList.isEmpty()) { if (mFindArucoList.isEmpty()) {
for (int i = 0; i < idArray.length; i++) { for (int i = 0; i < idArray.length; i++) {
if (idArray[i] == 19) { if (idArray[i] == 19) {
@ -369,38 +310,127 @@ public class ApronArucoDetect {
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f)); mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return; return;
} }
if (idArray[i] == 21 && detectedSmallMarkerId != 19 && detectedSmallMarkerId != 20) { if (idArray[i] == 17 && detectedSmallMarkerId != 20 && detectedSmallMarkerId != 19) {
detectedSmallMarkers = true;
detectedSmallMarkerId = 21;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return;
}
if (idArray[i] == 22 && detectedSmallMarkerId != 19 && detectedSmallMarkerId != 20 && detectedSmallMarkerId != 21) {
detectedSmallMarkers = true;
detectedSmallMarkerId = 22;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return;
}
if (idArray[i] == 17 && detectedSmallMarkerId != 19 && detectedSmallMarkerId != 20 && detectedSmallMarkerId != 21 && detectedSmallMarkerId != 22) {
detectedSmallMarkers = true; detectedSmallMarkers = true;
detectedSmallMarkerId = 17; detectedSmallMarkerId = 17;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f)); mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return; return;
} }
if (idArray[i] == 18 && detectedSmallMarkerId != 19 && detectedSmallMarkerId != 20 && detectedSmallMarkerId != 21 && detectedSmallMarkerId != 22 && detectedSmallMarkerId != 17) {
if (idArray[i] == 18 && detectedSmallMarkerId != 20 && detectedSmallMarkerId != 19&& detectedSmallMarkerId != 17) {
detectedSmallMarkers = true; detectedSmallMarkers = true;
detectedSmallMarkerId = 18; detectedSmallMarkerId = 18;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f)); mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return; return;
} }
if (idArray[i] == 23 && detectedSmallMarkerId != 19 && detectedSmallMarkerId != 20 && detectedSmallMarkerId != 21 && detectedSmallMarkerId != 22 && detectedSmallMarkerId != 17 && detectedSmallMarkerId != 18) {
if (idArray[i] == 15 && detectedSmallMarkerId != 18&& detectedSmallMarkerId != 20 && detectedSmallMarkerId != 19&& detectedSmallMarkerId != 17) {
detectedSmallMarkers = true;
detectedSmallMarkerId = 15;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return;
}
if (idArray[i] == 16 && detectedSmallMarkerId != 15&& detectedSmallMarkerId != 18&& detectedSmallMarkerId != 20 && detectedSmallMarkerId != 19&& detectedSmallMarkerId != 17) {
detectedSmallMarkers = true;
detectedSmallMarkerId = 16;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return;
}
if (idArray[i] == 24 && detectedSmallMarkerId != 16&& detectedSmallMarkerId != 15&& detectedSmallMarkerId != 18&& detectedSmallMarkerId != 20 && detectedSmallMarkerId != 19&& detectedSmallMarkerId != 17) {
detectedSmallMarkers = true;
detectedSmallMarkerId = 24;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return;
}
if (idArray[i] == 25 && detectedSmallMarkerId != 24&& detectedSmallMarkerId != 16&& detectedSmallMarkerId != 15&& detectedSmallMarkerId != 18&& detectedSmallMarkerId != 20 && detectedSmallMarkerId != 19&& detectedSmallMarkerId != 17) {
detectedSmallMarkers = true;
detectedSmallMarkerId = 25;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return;
}
if (idArray[i] == 23 && detectedSmallMarkerId != 25&& detectedSmallMarkerId != 24&& detectedSmallMarkerId != 16&& detectedSmallMarkerId != 15&& detectedSmallMarkerId != 18&& detectedSmallMarkerId != 20 && detectedSmallMarkerId != 19&& detectedSmallMarkerId != 17) {
detectedSmallMarkers = true; detectedSmallMarkers = true;
detectedSmallMarkerId = 23; detectedSmallMarkerId = 23;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f)); mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return; return;
} }
if (idArray[i] == 24 && detectedSmallMarkerId != 19 && detectedSmallMarkerId != 20 && detectedSmallMarkerId != 21 && detectedSmallMarkerId != 22 && detectedSmallMarkerId != 17 && detectedSmallMarkerId != 18 && detectedSmallMarkerId != 23) { if (idArray[i] == 13 && detectedSmallMarkerId != 23 && detectedSmallMarkerId != 25&& detectedSmallMarkerId != 24&& detectedSmallMarkerId != 16&& detectedSmallMarkerId != 15&& detectedSmallMarkerId != 18&& detectedSmallMarkerId != 20 && detectedSmallMarkerId != 19&& detectedSmallMarkerId != 17) {
detectedSmallMarkers = true;
detectedSmallMarkerId = 13;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return;
}
if (idArray[i] == 14 && detectedSmallMarkerId != 13&& detectedSmallMarkerId != 23 && detectedSmallMarkerId != 25&& detectedSmallMarkerId != 24&& detectedSmallMarkerId != 16&& detectedSmallMarkerId != 15&& detectedSmallMarkerId != 18&& detectedSmallMarkerId != 20 && detectedSmallMarkerId != 19&& detectedSmallMarkerId != 17) {
detectedSmallMarkers = true;
detectedSmallMarkerId = 14;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return;
}
if (idArray[i] == 22 && detectedSmallMarkerId != 14&& detectedSmallMarkerId != 13&& detectedSmallMarkerId != 23 && detectedSmallMarkerId != 25&& detectedSmallMarkerId != 24&& detectedSmallMarkerId != 16&& detectedSmallMarkerId != 15&& detectedSmallMarkerId != 18&& detectedSmallMarkerId != 20 && detectedSmallMarkerId != 19&& detectedSmallMarkerId != 17) {
detectedSmallMarkers = true;
detectedSmallMarkerId = 22;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return;
}
}
}
} else {
if (mFindArucoList.isEmpty()) {
for (int i = 0; i < idArray.length; i++) {
if (idArray[i] == 15) {
detectedSmallMarkers = true;
detectedSmallMarkerId = 15;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return;
}
if (idArray[i] == 16 && detectedSmallMarkerId != 15) {
detectedSmallMarkers = true;
detectedSmallMarkerId = 16;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return;
}
if (idArray[i] == 13&&detectedSmallMarkerId!=15&&detectedSmallMarkerId!=16) {
detectedSmallMarkers = true;
detectedSmallMarkerId = 13;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return;
}
if (idArray[i] == 14&&detectedSmallMarkerId!=15&&detectedSmallMarkerId!=16&&detectedSmallMarkerId!=13) {
detectedSmallMarkers = true;
detectedSmallMarkerId = 14;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return;
}
if (idArray[i] == 17&&detectedSmallMarkerId!=15&&detectedSmallMarkerId!=16&&detectedSmallMarkerId!=14&&detectedSmallMarkerId!=13) {
detectedSmallMarkers = true;
detectedSmallMarkerId = 17;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return;
}
if (idArray[i] == 18&&detectedSmallMarkerId!=17&&detectedSmallMarkerId!=15&&detectedSmallMarkerId!=16&&detectedSmallMarkerId!=14&&detectedSmallMarkerId!=13) {
detectedSmallMarkers = true;
detectedSmallMarkerId = 18;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return;
}
if (idArray[i] == 23&&detectedSmallMarkerId!=18&&detectedSmallMarkerId!=17&&detectedSmallMarkerId!=15&&detectedSmallMarkerId!=16&&detectedSmallMarkerId!=14&&detectedSmallMarkerId!=13) {
detectedSmallMarkers = true;
detectedSmallMarkerId = 23;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return;
}
if (idArray[i] == 22&&detectedSmallMarkerId!=23&&detectedSmallMarkerId!=18&&detectedSmallMarkerId!=17&&detectedSmallMarkerId!=15&&detectedSmallMarkerId!=16&&detectedSmallMarkerId!=14&&detectedSmallMarkerId!=13) {
detectedSmallMarkers = true;
detectedSmallMarkerId = 22;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
return;
}
if (idArray[i] == 24&&detectedSmallMarkerId!=22&&detectedSmallMarkerId!=24&&detectedSmallMarkerId!=18&&detectedSmallMarkerId!=17&&detectedSmallMarkerId!=15&&detectedSmallMarkerId!=16&&detectedSmallMarkerId!=14&&detectedSmallMarkerId!=13) {
detectedSmallMarkers = true; detectedSmallMarkers = true;
detectedSmallMarkerId = 24; detectedSmallMarkerId = 24;
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f)); mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), 0.03f));
@ -486,11 +516,12 @@ public class ApronArucoDetect {
} }
} else { } else {
//测试是否因为数组过长导致的飞机椭球返回很高但实际距离很近识别到多个码帧数据处理不过来
if (idArray.length > 5) { if (idArray.length > 5) {
idArray = Arrays.copyOf(idArray, 5); idArray = Arrays.copyOf(idArray, 5);
} }
for (int i = 0; i < idArray.length; i++) { for (int i = 0; i < idArray.length; i++) {
mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), ArucoMarkerDimensions.getSizeById(idArray[i]))); mFindArucoList.add(new ArucoMarker(idArray[i], mArucoCornerList.get(i), ArucoMarkerDimensions.getSizeById(idArray[i])));
} }
} }
@ -591,6 +622,7 @@ public class ApronArucoDetect {
List<Double> eulerAngles = RotationConversion.INSTANCE.rotationMatrixToEulerAngles(camR); List<Double> eulerAngles = RotationConversion.INSTANCE.rotationMatrixToEulerAngles(camR);
//欧拉角转飞机偏航角度 //欧拉角转飞机偏航角度
double yawCamera = MathUtils.toDegree(eulerAngles.get(2)); double yawCamera = MathUtils.toDegree(eulerAngles.get(2));
// LogUtil.log(TAG,"偏航角度:"+yawCamera);
if (yawCamera < 0) { if (yawCamera < 0) {
if (yawCamera < -15 && z < 9 && z > 3) { if (yawCamera < -15 && z < 9 && z > 3) {
if (yawCamera < -80) { if (yawCamera < -80) {
@ -814,19 +846,19 @@ public class ApronArucoDetect {
} }
} }
// LogUtil.log(TAG, LogUtil.log(TAG,
// " 杆量x=" + outX + " 杆量x=" + outX +
// " 偏移x=" + offsetX + " 偏移x=" + offsetX +
// " 杆量y=" + outY + " 杆量y=" + outY +
// " 偏移y=" + offsetY + " 偏移y=" + offsetY +
// " Id=" + id + " Id=" + id +
// " Size=" + arucoMarkers.size() + " Size=" + arucoMarkers.size() +
// " 宽度=" + arucoWidth + " 宽度=" + arucoWidth +
// " 椭球=" + Movement.getInstance().getElevation() + " 椭球=" + Movement.getInstance().getElevation() +
// " 融合=" + ultrasonicHeight + " 融合=" + ultrasonicHeight +
// " X=" + x + " X=" + x +
// " Z=" + z " Z=" + z
// ); );
if ((Math.abs(outX)>0.3||Math.abs(outY)>0.3)&&(Movement.getInstance().getElevation()<3.5)){ if ((Math.abs(outX)>0.3||Math.abs(outY)>0.3)&&(Movement.getInstance().getElevation()<3.5)){
if (ultrasonicHeight<=25){ if (ultrasonicHeight<=25){
outX=outX>0?0.125:-0.125; outX=outX>0?0.125:-0.125;
@ -859,7 +891,7 @@ public class ApronArucoDetect {
if (!startFastStick) { if (!startFastStick) {
// if (absX <= 250 && absY <= 300 && ultrasonicHeight <= 4 && flyingHeight <= 3) { // if (absX <= 250 && absY <= 300 && ultrasonicHeight <= 4 && flyingHeight <= 3) {
if (absX <= 230 && absY <= 250 && ultrasonicHeight <= 2 && flyingHeight <= 3) { if (absX <= 230 && absY <= 250 && arucoWidth >= 230 && ultrasonicHeight <= 3 && flyingHeight <= 3) {
logMessage = "参考融合高度降落:" + id + " arucoW" + arucoWidth + logMessage = "参考融合高度降落:" + id + " arucoW" + arucoWidth +
" Flying Height:" + flyingHeight + "--" + " Flying Height:" + flyingHeight + "--" +
" Ultrasonic Height:" + ultrasonicHeight; " Ultrasonic Height:" + ultrasonicHeight;
@ -928,7 +960,7 @@ public class ApronArucoDetect {
}; };
private void performOperation() { private void performOperation() {
// LogUtil.log(TAG,"快速下拉中..."+handlerCallbackCount); LogUtil.log(TAG,"快速下拉中..."+handlerCallbackCount);
DroneHelper.getInstance().moveVxVyYawrateHeight(0f, 0f, 0f, -4); DroneHelper.getInstance().moveVxVyYawrateHeight(0f, 0f, 0f, -4);
handlerCallbackCount++; // 增加计数器 handlerCallbackCount++; // 增加计数器
} }
@ -943,4 +975,4 @@ public class ApronArucoDetect {
} }
} }