Is Tower development dead?

I noticed on the Tower github that no commits have been made since November. Before then it was pretty active. Is this App completely dead now? I know there are others for Android (e.g. QGC) but I like Tower. It’s interface is very clean and responsive. Jsut curious if there is anyone out there who knows the status of that project.

I’ve stood in as maintainer of the project. But there is little active development ongoing at the moment. I’m just totally tied up in other work. This doesn’t mean it’s dead, it doesn’t go away, and if somebody finds the time and inclination to donate time to it, it will pick up.

2 Likes

I was asking because there are multiple people talking about how the Follow me function isn’t working all of a sudden. And, according to what I heard from the Solex developer, it’s an Android issue, which is fixed in code for his app.

I was going to try to PR it…but I just cannot find in the code the relavent changes that need to be made.

If you get time see the issue that I commented on in the github repo for the info i’m talking about.

thanks. I really like Tower…it’s high quality and feels so incredibly polished. so i for one would liek to see it get some love.

1 Like

The reason I like Tower right now is specifically aimed at the Solo. It’s the only GCS for Android that I can reliably get video info from every time. Even Solex isn’t very reliable as far as getting video. Qgroundcontrol, while I like the app interface, won’t retrieve video either. PC version or Android. I think that is a known issue though.

I also have a DIY hex; in these instances, I like QGC or if I’m feeling like lugging the 2 in 1 (tablet PC) to the field I’ll use Mission Planner. However for creating missions, MP is a little clunky.

1 Like

I’d also like to see about how hard it would be to get my Skyviper video working in Tower. It “should” be simple as pointing it at the Port number…but for some reason that just doesn’t work with the Skyviper. There must be something funky going on there. Mission Planner works IF you have VLC 32-bit installed on your computer, so I suppose it is a codec thing?

I’d love a little background about how that works…and if it is possible to put that in the Tower app.

I added a "Feature Request"


This is actually relavent to all the GCs, but I like Tower best, so I put it there. I may add the same request to MP though.

@BigTulsa can you open a github issue?

For what? QGround Control?

Yes, it’s worth checking to make sure any problems you have with QGroundControl have issues on github with enough information for developers to actually debug.

It’s possible this could be the same issue. I’m running Arducopter 3.5.4 on my Solo and maybe this is the reason it doesn’t show.

Look for LocationRelay in the code base. The issue appears to be that the accuracy of Android GPS locations has gotten worse (probably some move made by Google to “improve security”). LocationRelay insists on the location being at least somewhat accurate, and the threshold for that accuracy was < 10m. It appears that the best accuracy Android can suddenly now achieve is 10m, so I just changed the accuracy threshold in LocationRelay to 15m, and it solved the problem. (Or, rather, worked around it.)

In most places in Solex, I don’t actually send the location itself, I send interpolated locations along a predicted path that matches the movement of the locations coming in from the device. That way the path is smooth and will avoid “twitching” while it’s following something that moves slowly (e.g. walking pace).

1 Like

Thanks Kelly. I don’t see that term in the code, but I see it calling LocationRequest from the Android API. Then it seems just to take it and enableFollowMe(). It requests HIGH_POSITION_ACCURACY, but doesn’t seem to check what it got. Does Android just not send anything if that accuracy is not available?

Are you in the Tower code base, or in DroneKit? DroneKit is where the LocationRelay class is found.

1 Like

ok…so in order to do it I’ll have to fork the dronekit and build it into Tower…or rely on Dronekit to have an update themselves? which they don’t appear to have had since 2016…ug… thought this was going to be easy lol.

It is easy. Just clone DroneKit, make whatever changes you like, build it, and include it as a library in your application. If it’s Tower, that’s pretty easy.

Thanks I’m new to the Gradle building structure…and GitHub too. :\ I found where you comment out

//DroneKit-Android client lib
compile ‘com.o3dr.android:dronekit-android:3.0.2’

And uncomment the line

compile project(‘:ClientLib’)

but I have no idea how to fill that in and point it at my own repo…

That’s one way to do it, but I’m not doing it like that. Instead of the project reference, I reference the output .aar file from the app build:

compile(name: “dronekit-android.3.0.0”, ext: “aar”)

In your top-level build.gradle under allprojects, do this:

repositories {
    jcenter()
    maven { url "https://jitpack.io" }
    flatDir {
        dirs "libs"
    }
    google()
}

That adds “app/libs” as a “repository”. Then when you build DroneKit with this command:

./gradlew ClientLib:assembleRelease

…you take the output aar file (in ClientLib/build/outputs/aar) and copy it to your project’s app/libs directory.

1 Like

Thanks for the info! Like I said, I’m a newb when it comes to various build systems. I’m normally capable of perusing through code and finding what I want to change, but understanding various build systems has always been a weak point for me. (C# is easy!) So what you’re talking about above is like the .NET equivalent of using either a system provided DLL, or putting my own (same named) DLL in the project’s directories. The compiler (unless statically linked) will look in the current directory, and then outwards to find the libraries it is supposed to use. Right?

Also, Why has Dronekit-android development stopped? I noticed it hasn’t changed in over 6 months.
Did apps move away from that solution to something else?

thanks again.

@kellyschrock maybe you would like to push your changes to dronekkit-android to upstream so the community can benefit from your changes? Your Solex project is benefiting from this Dronekit-android being open source.

1 Like

It hasn’t stopped for me, FWIW. I started in June 2016 with what was there then, and started a custom branch for my needs. Since then I’ve been doing one thing or another to it for multiple apps and there’s been a lot of development. All that is going into branches on my fork of it.

I tried updating to a newer version at one point (December 2016) but a bunch of things had been changed, and it was causing some fairly severe problems for the vehicle. Parts of telemetry were broken, and changing any parameters on the vehicle in flight caused a “twitch” to start and get more severe until the vehicle crashed. So I went back to my custom version.

The .aar is not quite like a DLL, which is dynamically linked. An .aar file contains all of the code and resources needed for a particular unit of functionality, and it’s bound into the application’s .apk file directly at build time. It’s really more of a packaging construct than anything else.