This is an old revision of the document!
Table of Contents
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)
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.
- Onboard SDK (OSDK)
- 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