Contents
Source code at: https://github.com/Indoor-Robotics/dji_android_ros_driver
Overview
This package is an android mobile application for using DJI advanced consumer drones with the ROS system.
The DJI driver is a mobile (android) application. It uses the Android (Java) implementation of ROS and the DJI Mobile SDK to communicate with a ROS machine and DJI drone respectfully. It exposes standard interfaces for command velocities (twist commands) and some specific API (services) for tasks like takeoff, landing etc. The mobile device itself should be connected to the remote control.
Having the remote control in the loop is actually very important. It provides extra information on its display and most importantly, a safety mechanism to take manual control over the drone (it saved our lives several times when the SW or sensors failed…)
ROS API
dji_ros_driver
Bridge between ROS API to DJI Mobile SDKSubscribed Topics
Velocity commands
- Velocity commands
Published Topics
Status
- Formatted telemetry data: "battery=[batteryLevelAvg];isConnected=[isConnected];areMotorsOn=[areMotorsOn];isFlying=[isFlying];altitude=[altitude]"
Done
- an indication when a command (takeoff, land...) has finished.
Services
/flight_commands/takeoff (std_srvs/Empty)- A takeoff command to the drone
- A land command to the drone
- A stop command to the drone
- Make the drone rotate in its place