Drone Speed Value


I’m getting the speed of bebop and I got something strange …

the documentation says:

Drone speed changed

speedX (float): Speed on the x axis (when drone moves forward, speed is > 0) (in m/s)
speedY (float): Speed on the y axis (when drone moves to right, speed is > 0) (in m/s)
speedZ (float): Speed on the z axis (when drone moves down, speed is > 0) (in m/s)

but instead I have a different behavior …
when the drone moving forward pointing north have the speed X positive when moving forward pointing south is negative !!
am I doing something wrong? or bebop returns the north south east west speeds and not the speed which is pointing?



The speed is in the North East Down coordinates. Maybe the comments of the commands are not clear enough, I’ll try to modify them.

Best regards,


So, just to be sure… moveByEnd displacements are given in body frame while SpeedChanged velocities are referred to the NED frame? Since @Djavan’s answer is almost 10 months old, is it like this in the newest firmware updates, too? It is not so clear in the developers’ guide.


Yes, it’s still like this in newest firmware.


Oups, I totally forgot to update it. It will be done in the next release.


What is the best way to convert from body frame reference to NED? Is the yaw angle relative to North? Or is it relative to its power on heading?


Hi @Djavan I’m also having some issues getting to grips with this, thought I would post here instead of creating a new thread as I think its similar.

I am creating an interface to control a drone indoors without GPS. I want to sample the sensor data at regular intervals (lets say 250ms), plotting the estimated x,y,z position of the drone within a fixed space as it goes.

My question is, is it the case that a reading of speed_x, for example, is relative to the drones current position to north? For example, lets say the drone when it takes off is at 0,0 and is facing directly north (0 degrees). If I travel a bit north and a bit west, the drone will no longer be facing exactly north. Would I then have to allow for that change in my next calculation of speed x? Or am I over complicating things, and the speed_x and y are somehow relative to north and east from the time of take off?

Any pointers much appreciated! Thanks.


yes speedX is relative to the drone current position toward the North.
If you need to compute the forward speed (i.e. speed relative to the body of the drone), you can use the heading (yaw) of the drone to change the frame of reference.


Is it possible to calculate the amount a drone has rotated relative to the drones heading on take off? I initially though to simply negate the original yaw value at take off (eg: rotating the entire grid around the north bearing around 0,0) but this doesnt seem to work.

In other words, say:

Drone at 0,0 has yaw bearing of 144
Drone at 1,0 (forward 1 metre) has yaw of 148
Drone at 1,1 (forward and right 1 metre) has yaw of 143

What accounts for these changes and can how can I negate them as in each case the drone is still facing the same way relative to itself?