No version for distro humble. Known supported distros are highlighted in the buttons above.
No version for distro iron. Known supported distros are highlighted in the buttons above.
No version for distro rolling. Known supported distros are highlighted in the buttons above.
No version for distro noetic. Known supported distros are highlighted in the buttons above.
No version for distro ardent. Known supported distros are highlighted in the buttons above.
No version for distro bouncy. Known supported distros are highlighted in the buttons above.
No version for distro crystal. Known supported distros are highlighted in the buttons above.
No version for distro eloquent. Known supported distros are highlighted in the buttons above.
No version for distro dashing. Known supported distros are highlighted in the buttons above.
No version for distro galactic. Known supported distros are highlighted in the buttons above.
No version for distro foxy. Known supported distros are highlighted in the buttons above.
No version for distro lunar. Known supported distros are highlighted in the buttons above.
No version for distro jade. Known supported distros are highlighted in the buttons above.

dji_ronin package from dji_ronin repo

dji_ronin

Package Summary

Tags No category tags.
Version 0.0.0
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/Itamare4/dji_ronin.git
VCS Type git
VCS Version master
Last Updated 2018-05-25
Dev Status MAINTAINED
CI status Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

DJI Ronin Remote

Additional Links

No additional links.

Maintainers

  • Itamar Eliakim

Authors

No additional 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.

Hardware

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

  • ROS
  • OpenCV
  • SJI Android Capture Server
  • NodeJS
  • ADB
  • Python Dependencies: Naked, pySerial, numpy, PIL, matplotlib. (use pip install)

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.

Examples


Image processing using OpenCV


DJI Ronin controlled by dji_ronin node


Arduino RC Circuit

ROS Interface

  • Publisher - /GimbalAngle
    msg - Pan,Tilt,Roll
  • TF update from ronin_base_link to base_link based on yaw angle
  • launch file -
    Publish_Digits - 1/0 will publish an opencv image to /DJI_Ronin_App_Digits
    Publish_App - 1/0 will publish SJI capture to /DJI_Ronin_App
  • Service - /DJI_RotateTo dir ang
    For Example - in order to rotate to -20 will write rosservice call /DJI_RotateTo 2 20

Known Issues

  • Add timeout to rotation service

About

Itamar Eliakim
M.Sc Student Mechanical Engineering Faculty at Tel Aviv University, Israel
Email - Itamare@gmail.com

CHANGELOG
No CHANGELOG found.

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Dependant Packages

No known dependants.

Plugins

No plugins found.

Recent questions tagged dji_ronin at Robotics Stack Exchange

No version for distro hydro. Known supported distros are highlighted in the buttons above.
No version for distro kinetic. Known supported distros are highlighted in the buttons above.
No version for distro melodic. Known supported distros are highlighted in the buttons above.