PositionChanged trigger rate

Hello,

I am trying to control continuously an ANAFI drone from a python script. For this purpose, I need to get the position of the drone as often as possible.
In the documentation of PositionChanged, the event is said to be triggered “regularly”, but no more information is given on how regularly the event is triggered and if it is possible to modify this value. From my measures, the event seems to be triggered about every second.

My questions are :

  • Is it possible to trigger this event more often ?
  • Are the PositionChanged, SpeedChanged and AttitudeChanged events the only way to get the position, speed and rotation of a drone ?

Thank you for your help and suggestions in advance !

Hello,

The SDK event messages that are “regularly” triggered are usually sent at 5Hz. Some SDK event messages are only sent if the associated state is available or has changed (up to this maximum update rate). Event messages have not been designed for real-time applications (closed loop command control).

No, unfortunately this is not currently possible. You cannot trigger a specific event message or change its update frequency. This is a request that often comes up so I definitely think that we should at least consider adding this feature to our roadmap. I’ll submit this idea to the SDK team.

You can also extract some telemetry info from the video streaming metadata at 30 FPS (see the video streaming example in the Olympe user guide). I think that’s currently the best option for real-time / closed-loop control applications.

Is there an example of parsing the metadata in Java or Swift?

It is a C library from the PDRAW part of the SDK
https://developer.parrot.com/docs/pdraw/metadata.html

Hi @ndessart,

I’m currently implementing my own geofence in Sphinx, which relies on state estimates from PositionChanged events. You mentioned that events like this “are usually sent at 5Hz”. Unfortunately, I receive them only at ~0.4 Hz in simulation. So I wonder:
a) is this the expected behavior or is the fault on my side?
b) if it is desired, is there any way to change (increase) this?

About my setup: sphinx --version returns
Parrot-Sphinx simulator version 1.8
Gazebo multi-robot simulator, version 7.0.1
and in my .drone file I use
http://plf.parrot.com/sphinx/firmwares/anafi/pc/latest/images/anafi-pc.ext2.zip
as my firmware.

Looking forward to your reply!
Best,
Dominik

Hi again,

since last week we managed to perform flight tests on the physical Anafi as well. There we receive PositionChanged events at ~1 Hz. Again, I wonder if this is a bug or normal behavior (i.e. some events come at 5Hz, but this one doesn’t)? Given that the flight speeds cannot be changed and are quite high by default, 1 Hz is not very much unfortunately.

Using my current knowledge on Olympe I doubt that it can be changed, so it’s more about reporting this to the community.

Best,
Dominik

Hi,

As I said in the accepted answer: Event messages have not been designed for real-time applications (closed loop command control). A 1Hz drone position update is acceptable for a UI application.

It’s not possible to change the update rate of this event through Olympe.

Nicolas

Hi Nicolas,

thanks for your clarifications. I agree, you clearly informed people about its usefulness for real-time applications, I wondered more about the 1 Hz to 5 Hz discrepancy. Thanks nonetheless, we thought about video metadata as our backup plan indeed.

Best,
Dominik