Hover mode on Android client

Post Reply
Posts: 23
Joined: Tue Oct 06, 2020 6:22 am

Hover mode on Android client

Post by JaeDeok »

While looking at the Android client code, I came across this phrase.

"For safety reasons, altHold mode is only supported when the Crazyradio and a game pad are used"

For what problem is althold mode only available when using PA and gamepad?

Isn't it safe to implement hover mode in Android client using BLE? If so, I wonder why it's not safe.
Posts: 2463
Joined: Tue Feb 06, 2007 12:36 pm

Re: Hover mode on Android client

Post by arnaud »

This is a pretty old problem. TLDR: I do not think this statement is still fully accurate and starting a ticket on the android client github project would be the best way forward.

Now for the long story:

When this was written, the only assisted mode available was altitude-hold with the pressure sensor which assists with height but not roll/pitch so roll/pitch needs to be handled continuously. With a gamepad we implement it by pressing a button for assist mode and releasing it to come back to manual mode, this allows to recover quickly in case of problems. On a touch screen the only implementation we could think about was a on/off button and in that case it is very hard to regain manual control quickly since one would need to look at the phone to find the button.

Now, there is likely better UI design that could allow to take-over or cut the motors quickly without having to aim at a button on the screen and since we now have better autonomous control with the flow deck and other positioning system it feels that assisted modes on touch screen could be re-considered.

For bluetooth, it is more of an historic and implementation problem. As far as I remember, the current implementation over Crazyradio uses a java version of the Crazyflie lib. BLE on the Crazyflie has a very low bandwidth and a Crazyflie lib will start by reading the log and param table of content at connection time which would be very slow over BLE. So development of these advanced functionality was done mostly over Crazyradio.

Thought, there has been packet implemented in the Crazyflie to get param by name for example, this allows in one packet to get a param value which allows to detect if a deck is connected or not (decks connection status are exposed as params), this should be enough to implement assisted mode similar to what the client is doing (ie. activating different mode depending of what deck is installed).
Post Reply