Setting Go Home to GPS coordinates


#1

Product: [SkyController + Bebop2]
Product version: [1.7.4] + Bebop version: [3.9.0]
SDK version: [3]
Use of libARController: [YES] (Only for ARSDK)
SDK platform: [Android]
Reproductible with the official app: [Not tried]

Hi,

I’m trying to make my very new dron bebop 2 with skycontroller to “go home” according to some GPS coordinates. So I wrote some very basic android application based on provided samples that’s sending the SDK3 commands. However, the result is that after taking off the “go home” command just getting my dron a little higher, that’s all. No matter which GPS coordinate I’m setting the result is the same.

Here is my code:

mDeviceController.getFeatureARDrone3().sendPilotingTakeOff();
// sleep 5 sec
mDeviceController.getFeatureARDrone3().sendGPSSettingsHomeType((ARCOMMANDS_ARDRONE3_GPSSETTINGS_HOMETYPE_TYPE_ENUM.ARCOMMANDS_ARDRONE3_GPSSETTINGS_HOMETYPE_TYPE_PILOT));
// sleep 5 sec
mDeviceController.getFeatureARDrone3().sendGPSSettingsSendControllerGPS(latitude, longitude, altitude, -1, -1);
// sleep 5 sec
mDeviceController.getFeatureARDrone3().sendPilotingNavigateHome((byte) 1);

What is wrong? Why dron doesn’t move to the GPS coordinates?

In addition is there a way to get the Bebop 2 GPS coordinates?

Thanks in dvance,
Pavel


#2

Hi,

Try to put a positive (like 1 or 5) for the accuracies.
I understand what you did. We might have not well enough explained/conceive this command. In fact, the drone will reject locations that have bad accuracy. A location without any accuracy might be rejected by the drone.

Hope this helps,
Djavan


#3

Hi Djavan,

Thank you for the answer, I will definitely check it out. However, eventually I would need a better accuracy of about 0.5 meters so previously when I tried setting those parameters to 0.5 the result was the same, drone didn’t fly to the required GPS coordinates.

The command was:

mDeviceController.getFeatureARDrone3().sendGPSSettingsSendControllerGPS(latitude, longitude, altitude, (float)0.5, (float)0.5);

By the way if it’s making any change I communicate with the drone via SkyController.

Thanks,
Pavel


#4

I believe the SC has its own control loop for sending its location to the drone. Your updates are very likely being invalidated by the SC sending its position.


#5

I understand. Is there any documentation I can read about those features? The one given with SDK isn’t clear enough what is the right way to do staff.

Thanks


#6

I make that assumption based on usage / experimentation. You may be able to go into your SC’s Android System Settings and disable location services. That may prevent it from broadcasting a location.

Very early on I experimented with Reset Home and Set Home but have never had much success with either. It would be great if Set Home could be revisited by Parrot allowing us to override the first fix or takeoff home location.

deviceController.getFeatureARDrone3().sendGPSSettingsSetHome((double)latitude, (double)longitude, (double)altitude);


#7

Thanks for the suggestion I will try to disable location services in SC and see what happened.

I’ve also tried sendGPSSettingsSetHome command but had no success with it either :frowning:. It looks like if I set accuracy values in sendGPSSettingsSendControllerGPS to 1 meter my drone starts moving in the right direction, unfortunetly I need a better precision. What is more interesting that I’ve used ARMavlinkFileGenerator to create Way Points and the generated command MAV_CMD_NAV_WAYPOINT had “Acceptance radius in meters” of 5 meters so maybe there some internal limitation on how precise the GPS location can be.


#8

Hi,

The accuracy of sendGPSSettingsSendControllerGPSis not used as an accuracy in the final position of the drone. It is only used as a check. If the position is not accurate enough (above 12 meters if I remember correctly - but this can change in the future-), then the drone will not consider the location.

@synman: (Glad to see you again :wink: )
You can “override” the location by using the sendGPSSettingsSendControllerGPS and combine it with a set of the home type preference. If you chose the preferred home type as PILOTand you send a location through sendGPSSettingsSendControllerGPS, then the drone will return to this location in case of a return home.
However, if you want your drone to go back to its takeoff position, put back the preferred home type to TAKEOFF.

Hope this helps,
Djavan


#9

It’s good to be back. I have had a couple rough months on the Homefront but things are starting to settle down and I can once again devote some attention to my hobby. I ordered a Disco yesterday too :smile:

The problem that @spavell is having (as I understand it) is that he’s using a SC and with Preferred Home Type set to Pilot the SC (assumedly) automatically sends its location thus invalidating any requests he sends.


#10

I have found a command in the SDK called sendCoPilotingSetPilotingSource that supposed to set piloting source. Would it help if I set it to ARCOMMANDS_SKYCONTROLLER_COPILOTING_SETPILOTINGSOURCE_SOURCE_CONTROLLER? And I also understand that if app connected directly to drone it should work because SC doesn’t send it’s location anymore, right?


#11

That’s a very cool command… I use it for allowing my daughters to take control of the drone… It is just like the trainer function on a traditional RC transmitter.

I don’t think it is what you are looking for.