Coder Social home page Coder Social logo

dronekit-android's Introduction

DroneKit-Android

dronekit_python_logo

Build Status Issue Stats Issue Stats

DroneKit-Android helps you create powerful Android apps for UAVs.

Overview

DroneKit-Android is the implementation of DroneKit on Android.

The API provides interfaces that apps can use to control copters, planes, and ground vehicles. It is compatible with vehicles that communicate using the MAVLink protocol (including most vehicles made by 3DR and other members of the DroneCode foundation), and is validated against the open-source ArduPilot flight control platform.

This project implements the DroneKit-Android Client library which allows developers to leverage the DroneKit API.

Getting Started

The Getting Started guide explains how to set up a DroneKit project in Android Studio, and start the autopilot simulator (SITL) for testing during development.

Once you've got DroneKit set up, the First App: Hello Drone tutorial provides a step-by-step guide to creating a basic DroneKit-Android app and connecting it to a vehicle.

Examples

Source code and documentation for some of the apps built with DroneKit is linked below:

Resources

Project documentation is provided at http://android.dronekit.io/. This includes getting stated and tutorial material, and has links to examples and the full Javadoc API Reference.

The DroneKit Forums are the best place to ask for technical support on how to use the library. You can also check out our Gitter channel though we prefer posts on the forums where possible.

Users and contributors wanted!

We'd love your feedback and suggestions about this API and are eager to evolve it to meet your needs, please feel free to create an issue to report bugs or feature requests.

We welcome all types of contributions but mostly contributions that would help us shrink our issues list.

Licence

DroneKit-Android Client library is made available under the permissive open source Apache 2.0 License.


Copyright 2015 3D Robotics, Inc.

dronekit-android's People

Contributors

alexshafir avatar andrewtusik avatar arthurbenemann avatar aussiemod avatar azrin1972 avatar billbonney avatar bob01 avatar brad112358 avatar bys1123 avatar djellison78 avatar djmedina avatar fpvcuritiba avatar geeksville avatar gmorph avatar gregparsons avatar hamishwillee avatar helibot avatar jason4short avatar jeroennijhof avatar kellyschrock avatar m4gr3d avatar madbeef avatar metalnow avatar mrpollo avatar phmagic avatar realbuxtehuder avatar squilter avatar teemperor avatar tshapinsky avatar zumbrunnen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dronekit-android's Issues

Follow Type HeadingAngle

Please expose also the Follow Type "HeadingAngle" (which seems to be the generic function to Follow_Left, Follow_Right, Follow_Lead) together with a function to set the angle to the 3DRService interface. In my app I would like to set a certain heading angle, e.g. 45°.

USB ConnectionResult.getErrorCode always 0

When attempt to connect to drone via USB fails, onDroneConnectionFailed(ConnectionResult connectionResult) is called. When you try connectionResult.getErrorCode(), you always get zero.

It would be useful for developers to know why connection failed with error code.

STATUSTEXT parsing

When MAVLINK_MSG_ID_STATUSTEXT is received, 3DRServices simply brings its message to developer.

Instead, it would be useful for developer to get PreArm, Arm etc. errors reasons by enum, thus omitting parsing step.

Repo name update

Hi all, the repo is being renamed from 3DRServices to DroneKit-Android.
Given github nice toolkit, the update should be transparent to all devs/users. However don't hesitate to let me know if you experiences issues with the renamed git repo.

Thanks!

Raw Mavlink message cannot be sent

I tried sending raw Mavlink message via Drone.sendMavlinkMessage(). Copter doesn't react. Tried ARM and RC_OVERRIDE messages
Reason:
sendMavlinkMessage() under the hood sets sysId and compId, but target_system and target_component are left blank
Quickfix: set target_system = 1 of your Mavlink message

DOC - Improved headings formatting

Sphinx doesn't care what underline characters you use to mark up headings, as long as they are longer than the preceding text.

However it is usually easier to read and edit the markup if you use the following underline markup pattern for the different levels and have a space before the heading (except for title)

================
Document Title 
================

A first level heading
=====================

A second level heading
----------------------------------------

 etc

This is because = is the easiest character for your eye to scan as a heading line.

DOC: Better wording to describe "3DR Services" on http://android.dronekit.io/

http://android.dronekit.io/ or index.rst

The second paragraph should be swapped with the last paragraph (is "least important" information for developers)

The word "guide" in the second paragraph isn't quite right because it implies "instructions" rather than "listing"

The guide to apps built with DroneKit can be found 
on the Google Play Store under the name: 3DR Services.

Catalog (or even listing) would be better. So:

The catalog of apps built with DroneKit can be found 
on the Google Play Store under the name: 3DR Services.

or

A catalog of all DroneKit apps on the Google Play Store can be found in 3DR Services.

DroneKit Client Library Eclipse Support

i have been trying and failing to get the Client library working in Eclipse.
Eclipse doesn't like AAR files, so I have been extracting the contents, but in the latest DroneKit this gives missing references.
It appears that the AidlLib.jar is the problem. It has grown from about 500K to 2.5MB and seems to have an AndroidManifest as well as the Android Support compatibility library.
I thought I could try building a client library in AndroidStudio, but even this is a problem as it doesn't like the AidlLib.jar due to the support lib and manifest.
I tried removing the Android compatibility lib from my Studio test app and it still fails with the manifest:
Error:duplicate files during packaging of APK /Users/shawn/AndroidStudioProjects/dronekit/app/build/outputs/apk/app-debug-unaligned.apk
Path in archive: AndroidManifest.xml
Origin 1: /Users/shawn/AndroidStudioProjects/dronekit/app/build/intermediates/resources/resources-debug.ap_
Origin 2: /Users/shawn/AndroidStudioProjects/dronekit/app/build/intermediates/exploded-aar/com.o3dr/dronekit-android/2.2.19/libs/AidlLib.jar
You can ignore those files in your build.gradle:
android {
packagingOptions {
exclude 'AndroidManifest.xml'
}
}

Now I could continue trying to get this to work, but I think the AidlLib.jar build is just not right, as it was just classes before.

Parameters cache update

Sending a new value for a parameter to the vehicle should invalidate the cached list of parameters.

negative values for altitude (setGuidedAltitude)

Please allow negative values for setGuidedAltitude, on version 1.2.8 it seems to be limited to 2m for copter. I want to use it in the mountains during a descent with negative altitude (to arming) up to at least 1000m.

user camera profile not loading

my camera profile stored under droidplanner camerainfo are not listed in structure scanner or survey. i also try to crate a new dir called camera_info. but the same problem camera xml files which are in this dirs will not loaded. i use the latest version from google play and an samsung galaxy s3 phone

Doc: Delete the built HTML in the repo?

It is not normal to also upload the built HTML in the same tree - is this intentional?

Propose changes:

  • Delete the build tree from the repo
  • Add the build tree to .gitignore
  • Add *~ to .gitignore so temporary files are not shown in git

Tutorials required!

Here I will list tutorials that would definitely benefit to all users of 3DRServices and are currently missing:

  • Parameters read/write
  • Mission CRUD

dronekit client library not published

The documentation for DroneKit says to use the client library via:
compile 'com.o3dr:dronekit-android:2.2.+'

But the only libraries on http://jcenter.bintray.com/com/o3dr/ are 3dr-services-lib.

I have tried a local build of dronekit but that ends up with missing com.o3dr.android.client imports for ControlTower, Drone etc. although com.o3dr.services.android.lib imports are OK.
Admittedly I am trying to extract the AAR to use it in Eclipse, but this was working for the 3DR Services Lib.

DOC: Setting up SITL on linux does not cover connecting using UDP in Tower

FYI some confusion from this user on getting SITL set up: http://android.dronekit.io/getting_started.html#setting-up-sitl-on-linux

From user (to Phu):

"I think if the steps you listed above were included in http://android.dronekit.io/getting_started.html#setting-up-sitl-on-linux, it would clear up most of the confusion. There are some instructions on setting up SITL in those docs, but more guidance would certainly be helpful. The missing part for me was that I didn't know I had to connect using UDP in Tower."

The instructions that were provided additionally:

"UDP is the default type for Mavlink messages to get through.

Have you tried running SITL with an explicit --out IP address?

Steps: Connect your SITL machine and your Nexus to the same Wi-FI network.

Navigate to ardupilot/ArduCopter

Run:

sim_vehicle.sh -L 3DRBerkeley --console --out <MOBILE_DEVICE_IP>:14550

This says: run SITL with a default location of 3DRBerkeley and pip it out to MOBILE_DEVICE_IP.

Then on your Nexus, use a UDP connection, no need to specify the IP of vehicle.
"

FollowMe NPE

java.lang.NullpointerException
at
org.droidplanner.core.gcs.roi.ROIEstimator.updateRIO(ROIEstimator.java:90)
at
org.droidplanner.core.gcs.roi.ROIEstimator$1.run(ROIEstimattor.java:30)
at
...

using version 1.2.9

USB double connection bug

If you connect 3DR Radio to your phone/tablet, but copter is not in range, and after that try to connect 2 times via USB, first try will fail (as it should be), but second will succeed. This error is cyclic e.g. if you disconnect, then connect again first attempt will fail, second will succeed and so on.

Also, if you unplug 3DR Radio when connection is established, AttributeEvent.STATE_DISCONNECTED will occur. But after fake connection described above is established, unplugging creates NPE MavLinkConnection.java:232.

Unclear disconnect flow

Per guide, one needs to listen to onStart/onStop events and disconnect during onStop. However, when configuration changes, onStop is called, so that drone is disconnected, while app still requires connection to drone. From user perspective it could be loss of drone control from, say, orientation change.
Reconnecting is not good idea, because drone could be in-flight, and sudden disconnect might cause a failsafe.

Add support for gimbals attitude read/write

E.g. read/write gimbals roll, pitch, yaw via Mavlink message (radio output is not a clean design).
Additionally, add option to control copters yaw (for example, if gimbal is 2-axis)

Doc: Add vagrantfile and documentation to support contribution

Copy and update the documentation support from DroneKit-Python. This includes the vagrantfile to automate docs building and a contribution page.

@ne0fhyk - I have assigned to you for the vagrantfile updates (chase @mrpollo for any help needed). When those are complete please re-assign to me and I will add/update the contributing page. OK?

function to set ROI altitude during FollowMe

It seems that in version 1.2.8 the ROI altitude for normal FollowMe (not guided scan) seems to be fixed to 0 meters. It would be nice to have a function to set the ROI altitude during FollowMe, like the function setGuidedAltitude(double altitude) just for ROI.

Trigger tlog logging on arm/disarm events

Tlog is currently logged as soon as the app is connected to the vehicle.
Change it to start logging when the copter is armed, and stop when the copter is disarmed.

Piggyback off of existing connection

For dp-pebble I was hoping to wait for the user to connect using droidplanner. Then once the user connected, dp-pebble would automatically get connected as well.

Something that would allow me to call drone.connectExisting()

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.