dji-sdk / Mobile-SDK-Android-V5

MSDK V5 Sample
Other
247 stars 126 forks source link

Determining Drone Drift in Indoor Environments with Poor GPS Reception #374

Closed darkangel20156 closed 3 days ago

darkangel20156 commented 1 week ago

Is there a method to determine a drone's drift when flying indoors with poor GPS reception? I want to determine the drone's drift in order to prepare a scenario for flying the drone in an indoor environment with low GPS conditions.

Drone: Dji Mini 3

dji-dev commented 1 week ago

Agent comment from yating.liao in Zendesk ticket #109998:

Would you like to determine whether the aircraft is drifting or do you want to get detailed information about the drift? If you wish to determine if the aircraft is drifting, you may consider trying to judge by the aircraft's speed: KeyAircraftVelocity If you have not issued any instructions to the aircraft, but the aircraft continues to have speed, it can be considered as drifting.

However, the aircraft's speed is also calculated using sensors. If the aircraft is in an environment where most sensors are not functioning, then the speed may also be invalid.

°°°

darkangel20156 commented 1 week ago

Thank you for the information. However, in my case, the issue isn't with the sensors but rather with the low GPS environment and indoor setting. Given these conditions, what alternative methods or data points can I use to accurately determine if the aircraft is drifting?

By the side, I'm using a drone to fly indoors where GPS signals are weak. It's crucial to determine how much the drone drifts because excessive drifting can lead to collisions with walls. Additionally, I want to ask about data that can be used to plot the drone's flight trajectory. Does MSDK provide any values that can help with this?

dji-dev commented 1 week ago

Agent comment from yating.liao in Zendesk ticket #109998:

Aircraft drifting is related to sensors. Aircraft rely on sensors and GPS systems to maintain stability. In the scenario you described, if the aircraft loses GPS signal, it can only rely on sensors to keep the aircraft stable. For drones, sensors are their way of perceiving the world, and if the sensors fail to work properly, the aircraft may drift at that time. When sensors fail to work, diagnostic information will provide hints. It is not possible to determine the extent of aircraft drift through the SDK, as the data obtained by the SDK is what the aircraft pushes.

I think you do not want the aircraft to drift, right? would you consider providing a relatively good environment for the aircraft?

°°°

darkangel20156 commented 1 week ago

It's not that I don't want the drone to drift, but what I'm concerned about is how the drone drifts (how much it drifts, in which direction, and the specific distance). This information will help me plot a flight path for the drone to avoid collisions. Additionally, I have a second question: do you have any solutions for plotting the drone's flight trajectory? I need this because once I've pre-planned a flight path for the drone, I want to ensure that the drone follows the path I set.

dji-dev commented 1 week ago

Agent comment from yating.liao in Zendesk ticket #109998:

The SDK cannot obtain information about aircraft drift. Additionally, we do not have a solution for autonomous flight of drones indoors without GPS signal. You will need to design a solution based on your own requirements.

°°°

darkangel20156 commented 1 week ago

Thank you, I understand. Could you suggest some data that I can use to plot the drone's flight trajectory? I have tried using keys like KeyAircraftVelocity, but I feel this key is not very accurate. For example, when I fly diagonally (moving forward and to the right), I think both x and y values should change, but only one of them does. So, I'm looking for data that can help me plot this flight trajectory. Due to low GPS, the GPS signal level is 0, so I probably can't use KeyAircraftLocation3D.

dji-dev commented 4 days ago

Agent comment from yating.liao in Zendesk ticket #109998:

The coordinate system of KeyAircraftVelocity is the NED coordinate system, not the body coordinate system. The situation you mentioned may be normal when the aircraft is flying in a certain direction.

Due to the weak GPS signal on the aircraft, MSDK currently does not have any other available interfaces to directly or indirectly return the aircraft's position. For the aircraft's altitude, you can try using FlightControllerKey.KeyAltitude to obtain the aircraft's relative altitude.

°°°

darkangel20156 commented 4 days ago

Thank you, so there's no way to get the drone's position in a low GPS environment. I would like to ask if there is any key available to get values from a 3-axis accelerometer and a 3-axis gyroscope?

dji-dev commented 3 days ago

Agent comment from yating.liao in Zendesk ticket #109998:

The Mobile SDK is unable to access raw sensor data and can only retrieve the IMU status at the moment. I think that your requirements may not be achievable with the Mobile SDK. You might want to consider using the Payload SDK instead, as it allows for more hardware integration and expansion possibilities.

°°°

darkangel20156 commented 3 days ago

Thank you for your help! I think I should use the Payload SDK to get more hardware integration.

dji-dev commented 2 days ago

Agent comment from yating.liao in Zendesk ticket #109998:

I am glad to have been able to help you.

°°°