sendPilotingMoveBy doesn't work


#1

I have a parrot bebop 1 , its firmware is updated (4.0.6). The problem is sendPilotingMoveBy command doesn’t work at all. It is very important to me. Do you know what’s the problem and what should I do? I am using SDK 3.0 in ubuntu.

Thanks


#2

To provide the best help we can, we need you to:

  • be more specific about what “does’t work at all”
  • tell us which (exact) version of the SDK you’re using
  • give an example (with values) on how you’re using the sendPilotingMoveBy
  • if this makes sense (according the answer of the first point), give us the result of MoveByEnded.

Thanks!


#3

I am using SDK3 (http://developer.parrot.com/docs/SDK3/)
I specify ‘a’ key for moving the robot automatically and add this code to main code:

    case IHM_INPUT_EVENT_AUTO:
    if(deviceController != NULL)
    {
	IHM_PrintInfo(ihm,"start ...");
      error = deviceController->aRDrone3->sendPilotingTakeOff(deviceController->aRDrone3);
    
	IHM_PrintInfo(ihm,"running ...");

     error = deviceController->aRDrone3->sendPilotingMoveBy(deviceController->aRDrone3, 1, 1, 0, 0);
         error = deviceController->aRDrone3->setPilotingPCMDFlag(deviceController->aRDrone3, 0);

when I press the key it takes off and prints the messages, but it doesn’t move

Thanks for your response


#5

When I was asking for the exact version of the sdk you’re using, I meant which release version (3.10.0 or 3.12.6, or …).

But looking at your code, I understand what is wrong. You’re sending the moveBy immediately after the takeoff. But your drone is not flying yet. You should wait for the flying state change. To do that, listen for the flyingState event in the command received callback.

Once the flying state is hovering, you can send the moveBy. Please keep in mind that once the moveby is ended, the flying state will be set back by the drone to hovering, so your moveby will be triggered again.


#6

SDK 3.12.6
How should I add the code for flyingState event in my program?

Thanks


#7

Could you please send me a piece of code that I find how to use the moveByEnd event to wait for the end of a moveBy. I want to use several moveBy commands, but I don’t know how to use it.
For example,
deviceController->aRDrone3->sendPilotingMoveBy(deviceController->aRDrone3, 1, 0, 0, 0);
then
deviceController->aRDrone3->sendPilotingMoveBy(deviceController->aRDrone3, 0, 1, 0, 0);
and then
deviceController->aRDrone3->sendPilotingMoveBy(deviceController->aRDrone3, 1, 0, 0, 0);

How can I apply these commands or use the FLYINGSTATECHANGED callback to trigger the new “sendPilotingMoveBy” command?


#8

Here is a draft of how to adapt the existing Unix example to deal with relative moves.
I’ve not tested the code, but it should work :slight_smile:


#9

Thank you very much dear Djavan