Desarrollando Drones
UAVS
- Intro
- Regulaciones
- Componentes de un UAVs
- Arquitecturas/Protocolos de comunicacion
-
Programacion
- Configuracion del entorno
- Librerias / SDKS / Apps
- Ejemplos
Agenda
Drones
Unmaned Aerial Vehicle
Un dron es un vehículo aéreo que vuela sin tripulación.
Pueden ser controlados via Software o volar de forma autonoma con sistemas embebidos y GPS.
Tienen aplicaciones militares, vigilancia, rescate, monitoreo de trafico, agricultura, incendios, investigacion, geografia.
Drones
Regulacion en Colombia Circular 002 del 2015 Aerocivil
-
Los drones que se pueden operar en Colombia son aquellos que pesen hasta 25Kg. La operación civil de drones de un peso mayor queda prohibida en Colombia.
-
La operación del dron únicamente podrá hacerse en horario diurno y en condiciones meteorológicas de vuelo visual.
-
Los drones no podrán volar sobre un área congestionada, edificaciones, público o aglomeración de personas, [....] Tampoco podrán volar desde un aeródromo o en sus proximidades dentro de un radio de 5Km.
Drones
Regulacion en Colombia Circular 002 del 2015 Aerocivil
-
La altura máxima a la que pueden volar es 152 metros y no podrán alejarse más de 750 metros del operador o del lugar de su lanzamiento o despegue.
-
Si el dron se va a utilizar en labores de fotografía, vídeo, telemetría, datos, sensores, scanner, etc. (sic), se requiere permiso de la Fuerza Aérea Colombiana.
Conceptos Basicos
Componentes
Componentes
Controladora de Vuelo APM
- ArduCopter – open source autopilot Stabilizes the drone
- Navigates the drone (uses barometer, GPS and compass)
- A battery monitoring unit allows for failsafe landings on low battery.
- Power module measures voltage, current, and powers the APM at the odd voltage of 5.3V
Componentes
Controladora de Vuelo APM
Componentes
Controladora de Vuelo APM - API
Stabilize (manual control)
Alt(itude) hold (fixed Z)
Loiter aka stationkeep (keep fixed X,Y,Z)
Land (reduce Z until barometer detects descending rate <20cm/s and disarm)
Return to Launch (RTL) – first climb to a prespecified altitude (RTL_ALTITUDE), then return to the arming position (HOME)
Guided Mode (GOTO position)
Auto Mode: Execute a script including waypoints, ending in Land, RTL or Loiter.
Arquitecturas
Protocolos de comunicacion (software)
Arquitecturas
Protocolos de comunicacion (software)
Command line GCS
Also proxies and multiplexes commands to/from several GCSs (designed for GSC redundancy):
Each MAVLink from a GCS/App forwarded to Autopilot (master)
Each MAVLink from autopilot forwarded to GCS/App
Written in Python
Arquitecturas
Protocolos de comunicacion MAVLink
MAVLink is the only way to talk to the Autopilot.
MAVLink is a very lightweight, header-only message marshalling library for micro air vehicles.
Authoritative source of information: http://qgroundcontrol.org/mavlink/start
Library support for C/C++/C#, Python, WLua, JavaScript
Two versions defined: v0.9 and v1.0. We use v1.0.
Arquitecturas
Protocolos de comunicacion MAVLink
Arquitecturas
Protocolos de comunicacion AR Drone 2/AT Commands
Arquitecturas
Protocolos de comunicacion AR Drone 2/AT Commands
The AR.Drone 2 AT command protocol is used to control the AR.Drone 2 over wifi
Arquitecturas
Protocolos de comunicacion AR Drone 2/AT Commands
The AT commands are encoded as 8-bit ASCII characters with a carriage return "<CR>" as a newline delimeter. All AT commands start with "AT*" followed by a command name, a equals sign, a sequence number(starting with 1, which also resets the sequence number), and optionally a list of comma-seperated arguments for the command.
Arquitecturas
Protocolos de comunicacion AR Drone 2/AT Commands
- AT*REF (input) - Takeoff/Landing/Emergency stop command
- AT*PCMD (flag, roll, pitch, gaz, yaw) - Move the drone
- AT*PCMD_MAG (flag, roll, pitch, gaz, yaw, psi, psi accuracy) - Move the drone (With Absolute Control support)
- AT*FTRIM - Sets the reference for the horizontal plane (The drone must be on the ground)
- AT*CONFIG (key, value) - Configuration of the AR.Drone 2
- AT*CONFIG_IDS (session, user, application ids) - Identifiers for AT*CONFIG commands
- AT*COMWDG - Reset the communication watchdog
- AT*CALIB (device number) - Aks the drone to calibrate the magneto meter (The drone must be flying)
Programacion
Configuracion del entorno APM
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
Instalar NodeJS
sudo apt-get install python-pip python-dev build-essential
Instalar Python y pip
Programacion
Configuracion del entorno APM
sudo apt-get install python-dev python-opencv python-wxgtk3.0
python-pip python-matplotlib python-pygame python-lxml
Instalar dependencias
pip install MAVProxy
pip install future
pip install pymavlink
pip install dronekit
Instalar protocolo y proxy Mavlink
Programacion
Configuracion del entorno AR
npm install ar-drone
npm install ardrone-autonomy
Instalar cliente para comandos AT con nodejs y librerias
Programacion
Ejemplos
vehicle = connect('/dev/ttyACM0', wait_ready=True)
vehicle.mode = VehicleMode("GUIDED")
vehicle.armed = True
vehicle.simple_takeoff(aTargetAltitude) # Altitud en metros
Uso de Dronekit con python Mavlink
Programacion
Ejemplos
var autonomy = require('ardrone-autonomy');
var mission = autonomy.createMission();
mission.takeoff()
.zero()
.altitude(1)
.forward(1)
.right(1)
.left(1)
.backward(1)
.hover(1000) // for 1 second
.land();
Uso de AR drone con Nodejs
¿ Como hacer un proyecto con todo esto ?
Explicacion del Proyecto WEB Voyager2.0
- Conexion en tiempo real con Sockets
- Uso de Python y Nodejs en conjunto
- Uso de raspberry pi como servidor
- Recebir datos de sensores en la web (Ej: Lidar)
- Accionar Componentes (Ej: Servo motor)
- Comunicacion a Mavlink desde la web
- Comunicacion a AR Drone desde la web
< Coding time >
El Stack
Compartimos el codigo
Desarrollando Drones
By Julio César
Desarrollando Drones
- 1,277