Documentation questions sending Piloting commands


Product: [Bebop2]
Product version: [X.X.X]
SDK version: [3.9.2]
Use of libARController: [YES] (Only for ARSDK)
SDK platform: [Unix/C(wrapped in C++)]

Hi Parrot Team,

I use a C++ Application to control a Bebop 2. I set the Piloting Commands always with setPilotingCMD(…) at once.

in the official Doc you specify in the Piloting ection ( that the CMDs will be sent every 25ms. But in the section “Move the drone” ( it says, that the command is set every 50ms.

Waht is the correct value. How often is a command send, when it is not changed?

Are the commands TakeOff, Landing and Emergency overriding any Piloting values?
Can you clarify the documenation here?
Sometimes my Emergency and Landing commands were not send or received by the drone, but I’m 100% sure that the code has been executed in my application correctly.
Any ideas what can be the cause (Wifi was still active).

What is the timestamp and sequence number in the piloting command used for? Should it be set or can it be safely stay at 0 as in your samples?

Thanks for your Help


It is each 25ms for the Bebops even when you don’t change the values.

There is no commands that override these values.

I don’t know what can be the cause of the emergency or landing not received. You are flying and the drone does not react when you send these commands?




thanks for the fast reply.

Yes I’am flying the drone and the piloting commands and the takeoff command were accepted, but the emergency and land command hadn’t been executed by the bebop.

Is there an external way to get te Bebop to emergency if other things fail?





to specify my question about the commands not being executed by my Bebop 2:

I’m using a control loop to execute or set controller values and bebop commands through the SDK.
It runs at 100Hz.
When I control the bebop, the controller values are updated in the SDK by
arDroneError = deviceController->aRDrone3->setPilotingPCMD(deviceController->aRDrone3, (uint8_t) considerRollPitch, (int8_t) u[0], (int8_t) u[1], (int8_t) u[2], (int8_t) u[3], (uint32_t) 0);

When I want to execute Takeoff, Emergency or Landing the llop do not set a new PCMD, instead it uses
arDroneError = deviceController->aRDrone3->sendPilotingLanding(deviceController->aRDrone3); (or Emergency or Takeoff).

After Emergency and Landing the loop sends PCMD commands with 0s (setPilotingPCMD(deviceController->aRDrone3, 0,0,0,0,0,0)).

Takeoff works always. Emergency most of the time and Landing not so often.

When I close my application and start the Sample appliction it works.

Is there any restriction in how often a setPCMD can be called? Is the SDK to busy to get my direct landing call if there are too many PCMD setter callings?

Thanks for help



There is no limit for the setPilotingPCMD calls.
You said, after emergency and landing, the loop sends 0. What if you tried to do it before?
If the drone receives a positive gaz value, it will stop its landing.

To better understand your problem, can you log the command you send and the FlyingStates of the drone and post it (in a gist) here?




I had tried it before the landing command. but no effect.
I wasn’t able to do a full log yet, the next month I also can’t work on the issue.
I think i can log all commands in january and maybe I have a demo video.



sorry for delay. I can’t reproduce the problem anymore. Therefore I think this topic can be closed.

Thanks for your help