User Tools

Site Tools


drone_programming

This is an old revision of the document!


Drone Programming

How do you fly a drone from a program?

Onboard, in the FC or an attached microcomputer.l

Offboard, from a computer on the ground.

inav firmware on the fc. Does it have an API?

Arduino outputs PWM codes. What kind of codes does the radio controller transmit?

RC cars receive PWM codes.

https://www.instructables.com/id/Computer-Controlled-Quadrotor-the-Easiest-Way/

Platforms

Ground off-board

  • Linux
  • Windows
  • Mac
  • Android
  • iOS

UAV onboard

  • FC
  • Arduino
  • Raspberry Pi
  • Jetson Nano

dronekit

https://www.jetsonhacks.com/2016/04/11/gtc-2016-flying-robot-demo/

FrSky makes

  • Taranis RC which runs
  • OpenTX firmware which embeds
  • Lua scripting language

OpenCV, computer vision, 2500 algorithms, mostly non-neural-net

SciKit, a python library, the name stems from the notion that it is a “SciKit” (SciPy Toolkit), a separately-developed and distributed third-party extension to SciPy. features various classification, regression and clustering algorithms including support vector machines, random forests, gradient boosting, k-means and DBSCAN.

  • Real-time Image stitching
  • Object detection
  • Navigation
  • Controlling the aircraft

Parrot

  • Ground SDK Mobile, iOS or Android
  • PDrAW, video player pipeline
  • OLYMPE, python SDK for drone and simulator
  • SPHINX, simulator based on Gazebo engine
  • 3D Model, a blender model of the ANAFI drone
  • Freeflight, Android app to pilot your drone from your phone

Gazebo, open source robotics simulator

ArduPilot, open source autopilot software for any kind of vehicle

MAVLink, micro aerial vehicle link

  • lightweight open source messaging protocol for communicating with drones. Enables both offboard and onboard communications (e.g. between a GCS and drone, and between drone autopilot and MAVLink enabled drone camera).
  • follows a modern hybrid publish-subscribe and point-to-point design pattern.
  • runs on numerous microcontrollers/operating systems (including ARM7, ATMega, dsPic, STM32 and Windows, Linux, MacOS, Android and iOS).
  • Allows up to 255 concurrent systems on the network (vehicles, ground stations, etc.)

Tello, demo with reading the camera, object detect, and fly the drone, in python. https://m.youtube.com/watch?v=vDOkUHNdmKs

CoDrone

  • As in “code drone”, from RoboLink, an educational drone designed to teach children to write code, no camera.
  • CoDrone,
  • CoDrone Mini, $80, comes with RC, program in Blocky language
  • CoDrone Lite, $130, comes with BLE board, code in Snap language
  • CoDrone Pro, $180, comes with RC and Arduino-“compatible” board, code in python on an Arduino

Dronecode, a Linux Foundation non-profit

  • PX4 Autopilot, open source flight control software
  • MAVLink, micro air vehicle communication protocol, open source
  • MAVSDK, open source MAVLink library with APIs for C++, Swift, and Python.
  • QGroundControl, open source GCS for Android, iOS, Windows, Mac, Linux.

QGroundControl

Robot Operating System (ROS)

https://www.ros.org/

Not to be confused with Real Time Operating System (RTOS), which refers to a category of OS designed for real-time, as opposed to time-sharing OS's like Linux.

RTOS is a category, ROS is a specific product.

DJI SDK's

DJI Ground Control products run on Android and IOS.
Five SDK's are available to facilitate development of these apps.

  • Payload SDK
  • evidently an extension of the Onboard SDK
  • “payload” refers to additional hardware attached to the drone for specific tasks
    • camera and gimbal
    • spotlight
    • sensors and detectors
    • companion computer
  • Mobile SDK
  • used for developing Ground Station apps for IOS and Android
  • as of 11 July 2022, discontinuing new dev for IOS, focusing on Android
  • includes UX SDK
  • UX SDK
  • included in Mobile SDK v4.0 and later
  • three components: Widget, Collection, Panel
  • Windows SDK
  • evidently a port of the Mobile SDK to Windows
  • support Mavic 2 and Mavic Air (Wifi mode)

Onboard Computer

Manifold 2, used by DJI

software stack

  • Ground station
  • Autopilot ground
  • Communications
  • Autopilot onboard
  • FC firmware

distributed processing

Onboard

  • FC
  • Microcontroller

Offboard

  • GCS
  • RC
  • Vrx

Autopilot

  • Inputs: video, telemetry, human requests
  • Output: flight control commands

Aerial surveillance drone

drone_programming.1664072182.txt.gz · Last modified: 2022/09/24 22:16 by jhagstrand

Except where otherwise noted, content on this wiki is licensed under the following license: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki