DJIBote is a interface between DJI consumer drones and ROS, enabling sensoring and controlling through a network using any ROS package.
- Ubuntu 16.04 installation
- ROS Kinetic
- Android Studio 2.0+
- Android System 4.1+
- DJI Android SDK 4.3.2
- Tested with DJI Spark only
As it is now, the setup is a little complicated:
-
Connect Android phone to computer using USB cable.
-
Install the app on the phone using Android Studio.
-
Turn drone on, connect to its Wi-Fi and press
connect
in the app. -
Run
roscore
in a computer. -
Turn USB tethering on, go to a terminal and search for the assigned IP (it'll be the usb0 connection). It's important to say that your firewall settings need to enable connections in some ports (11311 used to connection and I need to see what others) or it won't work. --- If you want to use in the android emulator (no ROS support until now) the IP used should be: 10.0.2.2:11311
-
At ROS connection activity set the master IP to
http://tetheredAssignedIP:11311/
and click connect. -
From this moment on you'll see the drone live feed at screen and all available topics published in ROS.
This Android app is created using dji-android
SDK and rosAndroid
. It works sending messages through both of these services to make drone sensor states available in topics at the computer and messages sent do some ROS topics arrive as commands to the drone.
This project is in it's initial stages and until now the only implemented features are:
- Drone parameters (as heading, position and others) are visible in topics at the master computer
The next features to be implemented are:
- Make camera feed available in a topic
- Implement drone controls in app
- Control drone from messages sent to a
/cmd_vel
topic - Give higher priority to controls in phone screen than in ROS
That's my very first program in Java or Android (I need it as a tool in my bachelor's thesis), so it's terrible written. If you can help with it just send a pull request and I'll be very happy to accept it.