IronDronePix 1.0 (UAV)

Drone realizzato con l’allestimento descritto nella parte Hardware.

Questo drone permette di essere pilotato a distanza grazie all’usilio della raspberry pi 3 b+ e del pixhawk come centralina di controllo. Vi mostrerò adesso le configurazioni del caso e gli script utilizzati per far volare questo mostriciattolo da solo attraverso dei punti GPS impostati da noi.

Rispetto agli altri modelli che ho elencato nella parte Hardware, questo oltre ad avere già l’elencato hardware viene realizzato con un modulo GPS di cui vi mostrerò immagine e link per l’acquisto.

Quindi: Materiale utilizzato (extra elenco in post hardware).

Schema logico dei collegamenti (pixhawk e raspberry):

Dobbiamo aggiungere, dopo aver fatto i collegamenti il dongle 4G sulla nostra RaspBerry ed iniziare i settaggi software.

Esistono varie guide sul web, ma io vi riporterò i comandi dettati dall’esperienza dell’utilizzo (per i miscredenti: http://ardupilot.org/dev/docs/raspberry-pi-via-mavlink.html)

Dobbiamo partire dal presupposto che, il nostro raspberry deve avere una propria connessione (data dal dongle) e poterlo raggiungere tranquillamente dal web: cosa non semplice dato che i vari gestori di schede SIM bloccano il traffico in entrata perchè sotto NAT. dovremmo quindi utilizzare una VPN che ci permetterà di aprire un canale preferenziale tra noi ( il nostro PC con la nostra connessione di casa) e il Drone ( RASPBERRY con chiavetta 4G).

Per iniziare quindi vi rimando all’installazione della VPN tramite articolo precedentemente postato sul blog.

Per chi volesse una connessione semplicemente WIFI vi rimando ad un altro articolo:

Iniziamo adesso la configurazione del nostro RaspBerry, eseguendo pochi e semplici comandi:

sudo apt-get update
sudo apt-get install screen python-wxgtk2.8 python-matplotlib python-opencv python-pip python-numpy python-dev libxml2-dev libxslt-dev python-lxml
sudo pip install future
sudo pip install pymavlink
sudo pip install mavproxy

Andiamo sulla centralina (PixHawk) attraverso il collegamento USB tramite Mission Planner e abilitiamo questi valori, prima di continuare:

SERIAL2_PROTOCOL = 1 (the default) abilita MAVLink alla porta seriale.
SERIAL2_BAUD = 921 pixhawk comunicherà con il rasp a 921600.
(optional) LOG_BACKEND_TYPE = 3 if you are using APSync to stream the dataflash log files to the RPi

ARMING_CHECK = da 0 a 6
TERRAIN_ENABLE = da 0 a 1
FRAME_CLASS = da 0 a 1
LOG_BITMASK = da 176126 a 655358


Disabilitiamo il controllo da parte del sistema delle serial port:

sudo raspi-config
--> Interfacing Option --> Serial --> Disable

Abiliatiamo invece il controllo sulle porte UART:

sudo pico /boot/config.txt
enable_uart=1
dtoverlay=pi3-disable-bt

Non ci resta altro che utilizzare il tool mavproxy e collegarci alla pixhawk con:

sudo -s
mavproxy.py --master=/dev/ttyAMA0,57600 --out=udpbcast:10.8.0.1:14550 --quadcopter

Una volta effettuato il collegamento, per inizializzare la nostra centralina, daremo come comandi:

param show ARMING_CHECK
param set ARMING_CHECK 0
arm throttle

Adesso facciamo in modo che il mavlink si colleghi ad ogni accensione della raspberry al pixhawk editando l’rc.local (sudo pico /etc/rc.local)e inserendo queste semplici linee di codice prima di exit 0.

(
date
echo $PATH
PATH=$PATH:/bin:/sbin:/usr/bin:/usr/local/bin
export PATH
cd /home/pi
screen -d -m -s /bin/bash mavproxy.py --master=/dev/ttyAMA0,57600 --out=udpbcast:10.8.0.1:14550 --out=udpbcast:127.0.0.1:14551 --quadcopter
) > /tmp/rc.log 2>&1

exit 0

L’indirizzo IP della macchina dipende dalla connessione che avete effettuato, perciò se siete su VPN molto probabilmente l’IP sarà come quello che è gia stata inserito altrimenti cambiatelo a seconda delle vostre esigenze: questo ci servirà per la connessione da remote con il Mission Planner ( ovvero centro di controllo del nostro drone)

Installiamo adesso il kit per poterci interfacciare con python al nostro irondrone e poter eseguire dei piccoli tool che facciano quello che noi chiediamo.

Installiamo sul raspberry:

sudo apt-get install python-pip python-dev
pip install dronekit
pip install dronekit-sitl

Qui dobbiamo fare un inciso: ho avuto parecchi problemi poi ad attivare la comunicazione con il mavlink perchè l’installazione del kit sostiuiva la versione del pymavlink con una aggiornata contenente un bug: bisognerà quindi tornare alla versione stabile (funzionante) con:

sudo pip install pymavlink==2.2.12

Eseguendo un semplice reboot e collegandoci al nostro raspberry potremmo adesso creare la nostra prima app (python) che si interfaccia con il pixhawk per avere le info e comandare il nostro quadricottero.

Creiamo sudo hello.py ed inseriamo questo codice:

print "Avvio comunicazione con IronDronePix"
import dronekit_sitl

# Import DroneKit-Python
from dronekit import connect, VehicleMode

# Connect to the Vehicle.
print("Connessione in corso...")
vehicle = connect('127.0.0.1:14551', wait_ready=True)

# Get some vehicle attributes (state)
print "IronDronePix value:"
print " GPS: %s" % vehicle.gps_0
print " Battery: %s" % vehicle.battery
print " Last Heartbeat: %s" % vehicle.last_heartbeat
print " Is Armable?: %s" % vehicle.is_armable
print " System status: %s" % vehicle.system_status.state
print " Mode to fly: %s" % vehicle.mode.name    # settable

# Shut down simulator
print("Completed")

Il gioco è fatto. Adesso possiamo fare il nostro piccolo script per alzarsi da un metro da terra… oppure connetterci da remoto con un MissionPlanner ed impostare le coordinate per una navigazione autonoma in 4G!

Possiamo aggiungere le telecamere alla nostra raspberry e quindi realizzare un flusso video tramite (motion) vi rimando alla guida del mio blog. Oppure semplicemente agganciare qualsiasi altro sensore per telemetrie varie. L’immaginazione è senza limiti. Io ho raggiunto lo scopo di realizzare un Drone autopilotato da remoto oppure impostando dei comandi specifici con un tool e facendolo alzare da terra ( come idea originale )

Partiamo dal presupposto che l’articolo in questione ha lo scopo di dimostrare la totale autonomia nella creazione di veicoli UAV; ma vi ricordo che tali veicoli in Italia sono illegali (Leggete i regalamenti ENAC) pertanto l’utilizzo e la messa in opera dello stesso è strettamente responsabilità personale.


One thought on “IronDronePix 1.0 (UAV)”

Leave a Reply

Your email address will not be published. Required fields are marked *