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 SDK

Subscribed Topics

Velocity commands
/cmd_vel (geometry_msgs/Twist)
  • Velocity commands

Published Topics

Status
/dji/status (std_msgs/String)
  • Formatted telemetry data: "battery=[batteryLevelAvg];isConnected=[isConnected];areMotorsOn=[areMotorsOn];isFlying=[isFlying];altitude=[altitude]"
Done
/flight_commands/done (std_msgs/Empty)
  • an indication when a command (takeoff, land...) has finished.

Services

/flight_commands/takeoff (std_srvs/Empty)
  • A takeoff command to the drone
/flight_commands/land (std_srvs/Empty)
  • A land command to the drone
/flight_commands/stop (std_srvs/Empty)
  • A stop command to the drone
/flight_commands/rotate (std_srvs/Empty)
  • Make the drone rotate in its place

ros_connected

Internal node for connectivity checks to the ROS master.

Wiki: dji_android_ros_driver (last edited 2018-07-02 19:31:12 by AmitMoran)