diux-dev / rosettadrone Goto Github PK
View Code? Open in Web Editor NEWAndroid-based mavlink wrapper for DJI drones
License: BSD 3-Clause "New" or "Revised" License
Android-based mavlink wrapper for DJI drones
License: BSD 3-Clause "New" or "Revised" License
Hello โ
First of all, thanks for making this work available! I've compiled everything and connected my Phantom 3 Advanced to QGroundControl (which I run on a Desktop computer).
The mavlink commands are arriving, the video arrives also, but seems to lag quite a bit, with green bars appearing over the video feed. To rule out network problems I modified https://github.com/diux-dev/rosettadrone/blob/master/app/src/main/cpp/video_encoder.c#L155 to broadcast a videotestsrc
video source instead of the UDP packets and video shows up OK.
I tried tweaking encoding speed and bit rate, to no avail.
I'm guessing perhaps this is specific to the Phantom 3 Advanced, but I was just wondering if people have experienced the same issue or if they had suggestions?
I'm getting the message "reconnect your android device to the rc for full functionality" in the app - though it does indicate that its connected to the aircraft. Obviously re-connecting isn't doing the job, but I'm wondering if its the version of Android I'm on - I tried on my Pixel 3XL which is on 9 (Pie) and on my nVidia Shield K1 which is on 7.0 (Nougat). Unfortunately I don't have anything on 8, and nVidia is apparently not going to be updating their shield tablets.
On the Pixel, the app doesn't even open, it crashes immediately. On the shield, it opens, gives the aforementioned message when connected and the QGC app doesn't seem to load (just hangs).
Should this work on 7 or 9, or is the 'expected to work platform' only 8.x?
Hi There
This may not be an issue but rather by design, lack of functionality, etc....or plain just not supported :-/
Trying to get rosettadrone to work with a DJI Phantom 2
When I connect the DJI Remote and start Rosetta Drone v0.5 I get
Not ready to execute mission
NOT_SUPPORTED
in the DJI tab.
thanks in advance....
Richard
Hi,
Is it plan to push rosettadrone on the playstore ?
Hi,
will there be a .apk for version 1.2.0 soon?
Greetings
Arn
Sometimes the DJI SDK detects a connected drone, but all the components (flight controller, RC controller, battery, etc.) are null. We believe this may be a bug in the DJI SDK (dji-sdk/Mobile-SDK-Android#280.
To clear the error, restart the drone, kill the app, and restart it. If that does not fix the issue, uninstall and then reinstall the app.
Hi, we are actively maintaining Rosetta Drone.
We have added Mini support, a MissionManager with VirtualSticks, MAVLink 2 support, fixed bugs, etc.
Can you please link to the active repo on your README?
https://github.com/The1only/rosettadrone
Following the build instructions in the exact order given I ran into build errors that I am pretty sure are related to older code not being compatible with the current Android Studio veriosn. It would be helpful to have detailed version numbers for android studio, or up to date code.
Hi, great engineers.
Thanks for this great project firstly.
I just want some opinions from your guys. I recently want to develop a QGroundControl System to monitor DJI UAVs'(DJI OSDK supported) data and send some commands to the UAV. Currently, I think there are two ways to accomplish this.
I don't know which way is best or most feasible. I really want you guys opinion. I would appreciate it if you could give me some advice or opinion, even how minor it is.
I tested rosetta drone with an Inspire 1 and a Phantom 4 and was really impressed what is already possible.
The one thing bothering me when using it with QGroundcontrol is, that when I try to clear a misson from the vehicle (which is done by QGroundcontrol automatically when a new planning is started) an error is returned an one has to close QGroundcontrol and reopen it to plan a new route.
I use Rosetta Drone 1.2.1 (self compiled from master) and QGroundcontrol 3.5.3.
ADDITION: In fact sending that command seems to kill the connetion at all. One has to restart rosetta drone to get it running again.
On app video.
We've recently added MAVLink support for multiple drones and could use some feedback/additional testing with how waypoint translation works. Additional feedback on other conversions such as altitude would be helpful as well.
A rundown of how MAVLink routing works can be found here
I'm just putting this in here as a future enhancement. I've found that the long press behavior for clearing the log has left me empty-handed on several occasions. This generally happens as I'm scrolling and trying to view some previous data. The log gets cleared out by accident. I think the default behavior with this code:
This suggests the default behavior happens in 500ms:
https://stackoverflow.com/questions/1930895/how-long-is-the-event-onlongpress-in-the-android
That's too quick IMO. It also suggests that the long press is configurable. I've found that my Nexus 7 tablet has this option:
https://mcmw.abilitynet.org.uk/touch-hold-delay-android-jelly-bean-4-2-2/
So I'm going with that solution for the time being. Just wanted to share feedback and a workaround for those experiencing the same issue.
Video feed from P4P and other DJI drones appears garbled in QGroundControl. We thought this may have something to do with I Frames, but it looks like they are being added properly. We have spent extensive time looking for the bug, but have yet to find it.
Is this working with the mavic air? i will be testing it tonight but are there any problems known to you at the moment?
I was able to update all libraries to the latest, and thus add support for the latest DJI Drones.
However with MobileSDK 4.10 4.111 and 4.11.1 I can only get the telemetry to work.
I have sniffed deep in to the code, but there must be some changes that I can't get.
I am able to run the DJI Mobile SDK video demo just fine, but not inside rosettadrone.
Any one else have tested this?
I was able to get QGround control, mavproxy, and drone kit (python based) to work all at the same time, enabling me to write python scripts to fly the Mavic Pro 2 drone. But can't get video.
Can someone help with the command line switches to watch the mavic pro stream on gst-launch and or VLC? using the master.
Hi,
I built APK but I'm unable to install APK on my phone : Xiaomi Redmi Note 4.
Any idea ? Android says that release apk seems corrupt and that debug one could not be installed.
New to Android Studio, I'm just a regular user ... May be I miss some parameters in Android Studio !
Regards,
Hi all.
I've compiled apk for arm64-v8a architecture and successfully uploaded to my phone. But it doesn't start.Right after tap on the icon, the application silently stops and window hides.
The debugger said something about 'sigsegv' error, which means segmentation fault and memory access error. Later I will post stack.
Now I ask for help from more experienced users and developers. Did somebody tried to build arm64-v8a?
It would be great to get the Gimbal Yaw & Tilt! Where it could be used with this. Maybe sending it to a another UDP port?
Hello,
I tried to build the source code from the release 1.2.0 by my own, but had no success.
I tried on Windows and Linux development environment.
Used following components:
Linux:
Android Studio 3.2.1
OpenJDK 64 version 9
Gradle version 4.6
Android Plugin Version 3.2.1
SDK version API 27
Build Tools Version 28.0.3
Windows:
only difference is Oracle JDK version 8 Update 191
Error is:
Build command failed.
Error while executing process /home/is/Android/Sdk/cmake/3.6.4111459/bin/cmake with arguments {--build /mnt/Transfer/rosettadrone-1.2.0/app/.externalNativeBuild/cmake/debug/armeabi-v7a --target djivideojni}
[1/1] Linking C shared library ../../../../build/intermediates/cmake/debug/obj/armeabi-v7a/libdjivideojni.so
FAILED: : && /home/is/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang --target=armv7-none-linux-androideabi27 --gcc-toolchain=/home/is/Android/Sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 --sysroot=/home/is/Android/Sdk/ndk-bundle/sysroot -fPIC -isystem /home/is/Android/Sdk/ndk-bundle/sysroot/usr/include/arm-linux-androideabi -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -mfpu=neon -Wa,--noexecstack -Wformat -Werror=format-security -O0 -fno-limit-debug-info -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -nostdlib++ --sysroot /home/is/Android/Sdk/ndk-bundle/platforms/android-27/arch-arm -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--fix-cortex-a8 -Wl,--exclude-libs,libunwind.a -L/home/is/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a -Wl,--no-undefined -Wl,-z,noexecstack -Qunused-arguments -Wl,-z,relro -Wl,-z,now -shared -Wl,-soname,libdjivideojni.so -o ../../../../build/intermediates/cmake/debug/obj/armeabi-v7a/libdjivideojni.so CMakeFiles/djivideojni.dir/src/main/cpp/dji_video_jni.c.o ../../../../src/main/cpp/lib/armeabi-v7a/libffmpeg.so /home/is/Android/Sdk/ndk-bundle/platforms/android-27/arch-arm/usr/lib/liblog.so -latomic -lm && :
/home/is/Android/Sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: error: ../../../../src/main/cpp/lib/armeabi-v7a/libffmpeg.so:1:9: syntax error, unexpected STRING
/home/is/Android/Sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: error: ../../../../src/main/cpp/lib/armeabi-v7a/libffmpeg.so: not an object or archive
/mnt/Transfer/rosettadrone-1.2.0/app/src/main/cpp/dji_video_jni.c:42: error: undefined reference to 'av_register_all'
/mnt/Transfer/rosettadrone-1.2.0/app/src/main/cpp/dji_video_jni.c:44: error: undefined reference to 'av_codec_next'
/mnt/Transfer/rosettadrone-1.2.0/app/src/main/cpp/dji_video_jni.c:76: error: undefined reference to 'avcodec_register_all'
/mnt/Transfer/rosettadrone-1.2.0/app/src/main/cpp/dji_video_jni.c:77: error: undefined reference to 'av_register_all'
/mnt/Transfer/rosettadrone-1.2.0/app/src/main/cpp/dji_video_jni.c:80: error: undefined reference to 'avcodec_find_decoder'
/mnt/Transfer/rosettadrone-1.2.0/app/src/main/cpp/dji_video_jni.c:81: error: undefined reference to 'avcodec_alloc_context3'
/mnt/Transfer/rosettadrone-1.2.0/app/src/main/cpp/dji_video_jni.c:82: error: undefined reference to 'av_parser_init'
/mnt/Transfer/rosettadrone-1.2.0/app/src/main/cpp/dji_video_jni.c:94: error: undefined reference to 'avcodec_open2'
/mnt/Transfer/rosettadrone-1.2.0/app/src/main/cpp/dji_video_jni.c:99: error: undefined reference to 'av_frame_alloc'
/mnt/Transfer/rosettadrone-1.2.0/app/src/main/cpp/dji_video_jni.c:120: error: undefined reference to 'av_init_packet'
/mnt/Transfer/rosettadrone-1.2.0/app/src/main/cpp/dji_video_jni.c:129: error: undefined reference to 'av_parser_parse2'
/mnt/Transfer/rosettadrone-1.2.0/app/src/main/cpp/dji_video_jni.c:162: error: undefined reference to 'av_free_packet'
/mnt/Transfer/rosettadrone-1.2.0/app/src/main/cpp/dji_video_jni.c:214: error: undefined reference to 'avcodec_close'
/mnt/Transfer/rosettadrone-1.2.0/app/src/main/cpp/dji_video_jni.c:218: error: undefined reference to 'av_free'
/mnt/Transfer/rosettadrone-1.2.0/app/src/main/cpp/dji_video_jni.c:219: error: undefined reference to 'av_free'
/mnt/Transfer/rosettadrone-1.2.0/app/src/main/cpp/dji_video_jni.c:220: error: undefined reference to 'av_parser_close'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
Could you please give more Information in the Readme about the required tools and versions to successful build the apk.
Thanks Codierama
Getting this error w/ native compiling, on a mac, using Android Studio etc
Error while executing process /Users/kevin_watkins/Library/Android/sdk/cmake/3.6.4111459/bin/cmake with arguments {--build /grindhouse/workspace/rosettadrone/app/.externalNativeBuild/cmake/debug/armeabi-v7a --target djivideojni}
[1/1] Linking C shared library ../../../../build/intermediates/cmake/debug/obj/armeabi-v7a/libdjivideojni.so
FAILED: : && /Users/kevin_watkins/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi23 --gcc-toolchain=/Users/kevin_watkins/Library/Android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64 --sysroot=/Users/kevin_watkins/Library/Android/sdk/ndk-bundle/sysroot -fPIC -isystem /Users/kevin_watkins/Library/Android/sdk/ndk-bundle/sysroot/usr/include/arm-linux-androideabi -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -mfpu=neon -Wa,--noexecstack -Wformat -Werror=format-security -O0 -fno-limit-debug-info -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -nostdlib++ --sysroot /Users/kevin_watkins/Library/Android/sdk/ndk-bundle/platforms/android-23/arch-arm -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--fix-cortex-a8 -Wl,--exclude-libs,libunwind.a -L/Users/kevin_watkins/Library/Android/sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a -Wl,--no-undefined -Wl,-z,noexecstack -Qunused-arguments -Wl,-z,relro -Wl,-z,now -shared -Wl,-soname,libdjivideojni.so -o ../../../../build/intermediates/cmake/debug/obj/armeabi-v7a/libdjivideojni.so CMakeFiles/djivideojni.dir/src/main/cpp/dji_video_jni.c.o ../../../../src/main/cpp/lib/armeabi-v7a/libffmpeg.so -llog -latomic -lm && :
/Users/kevin_watkins/Library/Android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: error: ../../../../src/main/cpp/lib/armeabi-v7a/libffmpeg.so:1:9: syntax error, unexpected STRING
/Users/kevin_watkins/Library/Android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: error: ../../../../src/main/cpp/lib/armeabi-v7a/libffmpeg.so: not an object or archive
/grindhouse/workspace/rosettadrone/app/src/main/cpp/dji_video_jni.c:42: error: undefined reference to 'av_register_all'
/grindhouse/workspace/rosettadrone/app/src/main/cpp/dji_video_jni.c:44: error: undefined reference to 'av_codec_next'
/grindhouse/workspace/rosettadrone/app/src/main/cpp/dji_video_jni.c:76: error: undefined reference to 'avcodec_register_all'
/grindhouse/workspace/rosettadrone/app/src/main/cpp/dji_video_jni.c:77: error: undefined reference to 'av_register_all'
/grindhouse/workspace/rosettadrone/app/src/main/cpp/dji_video_jni.c:80: error: undefined reference to 'avcodec_find_decoder'
/grindhouse/workspace/rosettadrone/app/src/main/cpp/dji_video_jni.c:81: error: undefined reference to 'avcodec_alloc_context3'
/grindhouse/workspace/rosettadrone/app/src/main/cpp/dji_video_jni.c:82: error: undefined reference to 'av_parser_init'
/grindhouse/workspace/rosettadrone/app/src/main/cpp/dji_video_jni.c:94: error: undefined reference to 'avcodec_open2'
/grindhouse/workspace/rosettadrone/app/src/main/cpp/dji_video_jni.c:99: error: undefined reference to 'av_frame_alloc'
/grindhouse/workspace/rosettadrone/app/src/main/cpp/dji_video_jni.c:120: error: undefined reference to 'av_init_packet'
/grindhouse/workspace/rosettadrone/app/src/main/cpp/dji_video_jni.c:129: error: undefined reference to 'av_parser_parse2'
/grindhouse/workspace/rosettadrone/app/src/main/cpp/dji_video_jni.c:162: error: undefined reference to 'av_free_packet'
/grindhouse/workspace/rosettadrone/app/src/main/cpp/dji_video_jni.c:214: error: undefined reference to 'avcodec_close'
/grindhouse/workspace/rosettadrone/app/src/main/cpp/dji_video_jni.c:218: error: undefined reference to 'av_free'
/grindhouse/workspace/rosettadrone/app/src/main/cpp/dji_video_jni.c:219: error: undefined reference to 'av_free'
/grindhouse/workspace/rosettadrone/app/src/main/cpp/dji_video_jni.c:220: error: undefined reference to 'av_parser_close'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
at com.android.build.gradle.tasks.ExternalNativeBuildTaskUtils.executeBuildProcessAndLogError(ExternalNativeBuildTaskUtils.java:244)
at com.android.build.gradle.tasks.ExternalNativeBuildTask.executeProcessBatch(ExternalNativeBuildTask.java:307)
at com.android.build.gradle.tasks.ExternalNativeBuildTask.build(ExternalNativeBuildTask.java:185)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
... 119 more
Can RosettaDrone work with the DJI A3 flight controller and the Lightbridge 2?
Hi,
this is a really great project!
Would you consider changing the license to a more permissive license (MIT, Apache 2, BSD license) - like all the DroneCode projects QGroundControl, PX4, ... ? This would allow even wider adoption of it.
Peter
Any interest in adding support for the latest round of products?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.