Package Description

Additional Links

Maintainers

Authors

DJI Ronin - ROS Control Unit

OVERVIEW

This is probably the worst way to control the DJI Ronin gimbal, but hey! it works great and nowadays that's the only way to control it.

HOW? WHY?

DJI Ronin, 3 Axis gimbal, DJI decided to release their device without any API for developers, which makes it absolutely useless. The Easy Way - Just buy gimbal which is based on Basecam/Alexmos, they DO have Serial API.The Hard Way - Creating a server which runs the DJI Ronin app on android and continuously transmits screen capture of the app to a server on the robot through ADB(using sji), using KNN to recognize the digits from the screen capture and publish Pan, Tilt, Roll as custom ROS message.
The control node will subscribe to the angles and rotate the gimbal using an Arduino board(will explained below) to a given angle using the rosservice call.
In my case, The gimbal is mounted on the front of robot aiming the sensing unit at different directions, i already had the ronin so instead of buying a new gimbal i looked for a 'creative' way to control it.

Circuit Diagram

Thanks to Learning about Electronics

Instead of LED at the diagram you should connect one of the axis from the DJI remote pan/tilt/roll potentiometer.
After creating the circuit you should calibrate the poteniometer to the DJI remote using USB cable and windows application, this will give you the settings to speed var at the DJIRonin_Control.py

Installation

The package will do most of the things for you, download DJI Ronin App to your android mobile, connect it through usb.
Running the launch file will open the app on your mobile, just press 'MOTORS'.
The phone capturing resolution will set to 360x640, the script will locate your phone capturing address(SJI) automatically.

Software

Calibration

In order to rotate the gimbal CCW/CW, we need to calibrate our custom remote to fit the MCP41050 pot, using DJI ronin app set the Arduino to a value that fits your RC scale, set these values as default.
In order to find the values that rotates the gimbal open a serial communication with the Arduino board (via Putty or so) at baud 9600, and enter 1 SPEED, and 2 SPEED, 1/2 refers to CW, CCW. Write this value in the speed variable in DJIRonin_Control.py.