Bebop Mavlink file format description?


#41

But am I correct to assume that i would get an
AUTONOMOUS FLIGHT STATE ERROR
if i were to try and start a mavlink file without the GPS fix.
Because that does not happen. I don’t get any response after uploading and calling sendMavlinkStart().


#42

What do you mean by AUTONOMOUS FLIGHT STATE ERROR?
Where does this error come from ?


#43

It is documented here.


#44

I just finished my first successful autonomous flight in my own App, yay! :grinning:

But i could only get a GPS fix, after i used the “Set GPS Position” Option in the FreeFlight App.
What does this Option do?


#45

Greeting @Djavan,

I’m having the same problem that @derbestefan. I cant get it “fix”, and I’m not sure what “GPS fixed” means. The erro that come on this command is GPS for Drone FlightPlan Sate 0.
How to fix it?

I’m using Bebop 2, frimeware 3, ARSDK 3.8 for Android.

Thank you for the time,
Best regards Andre Cardoso


#46

Hi @Slobdell,

Congrats for having solved that issue and making your BeBop fly autonomously!

Looking at this thread, I was wondering whether you had to do anything special apart from creating the uploader through the corresponding class in ARDataTransfer library. Or what comes afterwards is just to send the StartMavlinkPlay command.

Best regards!
Aitor


#47

Apart from that… is it mandatory to use the uploader or could you stick to the SDK instructions and replace it for

ARDATATRANSFER_Manager_t* ARDATATRANSFER_Manager_New (eARDATATRANSFER_ERROR *error); ?

Thank you in advance!


FTP client for autonomous flight performance
#48

As of when I figured this out, there was no functionality in the sdk to upload the file. Therefore, you have to upload it yourself through any ftp library you care to use.

To your second question, yes just cooy that code from the documentation. That code will only play a file that’s already on the drone though, hence why you need to upload it first.


#49

Many thanks for your answer @Slobdell!

Do you remember which one you used? I am completely new when it comes to FTP transferring and I would like the to find most easy-to-use library I could.

And I have another question. Is it possible, by any chance, to send waypoints to the drone while travelling to previous ones?

Best regards,
Aitor


#50

Hello.
For FTP, use ARUtilsFtpConnection like this. Works fine.

public ARCONTROLLER_ERROR_ENUM prepareAutonomousFlight(ARDiscoveryDeviceService currentDeviceService){

    String productIP = ((ARDiscoveryDeviceNetService) (currentDeviceService.getDevice())).getIp();
    try {
        // FTP connection
        ARUtilsFtpConnection arUtilsFtpConnection = new ARUtilsFtpConnection();
        arUtilsFtpConnection.createFtpConnection(productIP, 61, ARUtilsFtpConnection.FTP_ANONYMOUS, "");

        // If already exist, overwrite it
        arUtilsFtpConnection.put(FTP_FILE_NAME, MY_PATH_NAME + MY_FILE_NAME, null, null, ARUTILS_FTP_RESUME_ENUM.eARUTILS_FTP_RESUME_UNKNOWN_ENUM_VALUE);

        Log.d(TAG, String.format("Flight plan %s has been put on bebop FTP server", FTP_FILE_NAME));
    } catch (Exception ex) {
        Log.w(TAG, String.format("AutonomousFlight prepare error : ", ex.getMessage()));
    }

    return sendstartMaVLink();
}

#51

Hello Djavan.

I’m working with ARSDK v3.8.
Autonomous flight seems to works fine for me, even if, I don’t have test it with propellers.

I have an uncertainty with StartingErrorEvent.

When I use sendMavlinkPause() command, I received an ARCONTROLLER_DICTIONARY_KEY_COMMON_FLIGHTPLANEVENT_STARTINGERROREVENT as describe in startingerrorevent
and I’m unable to get details on it.

Could you tell me what is the object type and how to have more details on this events.

In addition, could you tell how to have details on speedbridleevent ?

In attachments, my logs

Thank you


#52

I’ve got this working with (limited) success.

I’m noticing that the flight plan will periodically stall when using a flight plan with an ROI specified.

It is pretty weird as I’ll basically set a series of waypoints around an ROI’s radius at 0, 45, 90, 135, 180, 225, 270, 315, and back to 0.

When it does stall it tends to happen between the 2nd and 3rd waypoint. The drone just starts floating around . This would spell disaster if it happened outside of wifi range.

It seems I can create the stall fairly frequently the shorter the radius I use (5-10 meters) and the lower the altitude (5-10 meters). However I’ve had it stall at 50, 100, even 200 meters.

If I use the Absolute View Type I can fly from point to point all day with no issues.

I’m also leveraging the DoSpeed do event but I doubt it is root cause. I’m clearly doing something wrong as I know this (ROI’s) is available as of 3.2.0.

@Djavan or @Nicolas would it be helpful if I posted the resulting mavlink file for a plan?

Here’s a “static” example of how I’m building my plan:

final ARMavlinkMissionItem roi = ARMavlinkMissionItem.CreateMavlinkSetROI(MAV_ROI.MAV_ROI_LOCATION, 0, marker.getId(), (float) marker.getLatitude(), (float) marker.getLongitude(), 2);
generator.addMissionItem(roi);

final ARMavlinkMissionItem speed = ARMavlinkMissionItem.CreateMavlinkChangeSpeedMissionItem(1, marker.getSpeed(), 100);
generator.addMissionItem(speed);

view = ARMavlinkMissionItem.CreateMavlinkSetViewMode(MAV_VIEW_MODE_TYPE.VIEW_MODE_TYPE_ROI, marker.getPoi().getId());
generator.addMissionItem(view);

Now picture me doing this for each of the calculated coordinates to create a full circle around the POI:

final ARMavlinkMissionItem destination = ARMavlinkMissionItem.CreateMavlinkNavWaypointMissionItem((float) marker.getLatitude(), (float) marker.getLongitude(), (float) marker.getAltitude(), (float) yaw);
generator.addMissionItem(destination);

And this is what it looks like visually:

And the result when it works… I can rerun this plan multiple times. One try it will work and the next it won’t. Sometimes I can clear the plan, set a simple single waypoint run, reload and execute and it’ll work. Other times it just stalls.

https://goo.gl/photos/AVscwW9Rq4F7Ls9z6


#53

So that was all for nothing. I broke down and bought Flight Plan last night and reverse engineered the methods Parrot is using until I got a perfect match.

I had a number of issues but I think the biggest was that I wasn’t normalizing yaw to 0-360.

Working great now.


#54

Hello,
You can also make reverse engineering by trying Pix4D Android software and look at the produced mavlink file.


#55

Am i the only one, not able to create a region of interest (roi) item?
Currently using arsdk 3.8.


#56

I’d say that the first try to make it work would be to update the sdk you’re using. SDK 3.8 has been released in 2015, that’s quite a while… :slight_smile: