dimanche 30 août 2020

Bebop 2

Je partage ici en vrac quelques liens sur le drone Bebop 2 qui peut servir soit à faire de belles vidéos de kiteboat, soit à découvrir les autopilotes de drones qui pourraient servir de base ou d'exemple pour un autopilot de kite.

Le Bebop 2 est conçu par Parrot et fonctionne très bien avec le logiciel propriétaire Parrot (qui a une API ouverte). Parrot a également ouvert son matériel pour permettre l'utilisation d'autres plateformes. Le drone a pour conséquent été hacké par de nombreuses personnes.

Des indications étaient notamment disponibles sur le side developer de Parrot, mais elles ont malheureusement disparues depuis.

Guide du hackage
http://fargesportfolio.com/wp-content/uploads/2018/01/BeebopHackingGuide1_7_2.pdf

Skycontroller 2
Il s'agit de la télécommande qui grâce à son antenne directive permet de piloter et recevoir la vidéo du drone jusqu'à 2km.
https://www.rcgroups.com/forums/showthread.php?2728773-Official-Parrot-Disco-%2A%2A%2AOwner-s-Thread%2A%2A%2A/page53
https://github.com/jberaud/joystick_remote/issues/2
https://github.com/uavpal/disco-docs/wiki/skycontroller-2 

https://discuss.ardupilot.org/t/controlling-parrot-drones-using-skycontroller2/52647

4G
https://github.com/uavpal/beboptwo4g

Video streaming
https://developer.parrot.com/blog/2016/play-bebop-stream-on-vlc/

Paparazzi

https://www.youtube.com/watch?v=pv0CAQC6iAE


Ardupilot
Compilation  http://ardupilot.org/dev/docs/building-for-bebop-2.html
https://www.youtube.com/watch?v=Ir0DyvlbTM0

https://www.youtube.com/watch?v=HJN_gT1eNDk

https://www.youtube.com/watch?v=jFNdy4UPq_4

https://www.youtube.com/watch?v=lf9X7BZ7XbU

https://www.youtube.com/watch?v=ay0b1HgASM0

ROS

https://www.youtube.com/watch?v=fGKR1G7orKA

https://bebop-autonomy.readthedocs.io/en/latest/

https://docs.google.com/document/d/1oVEO_3HxiXwagmXyrMhh8KIorxdNxHejzwBQ876_fpM/edit

http://debojj.net/downloads/bebop-ros-demo

https://github.com/Michionlion/bebop_teleop

OpenCV
https://www.youtube.com/watch?v=aT_kC5ZE2Oc

PX4

https://docs.px4.io/en/flight_controller/bebop.html
https://www.youtube.com/watch?v=hTVNHlqxWBk

https://www.youtube.com/watch?v=loC3IJpMdNs

https://review.px4.io/plot_app?log=d9bf3e69-ecc5-478c-8713-23581efa84ad

Mètre ruban

(Notes réchauffés d'octobre 2016)

Je fais face à un problème sur les premières versions.

Il y a parfois du mou dans les lignes ce qui conduit à un surpattage.

Ma première parade a été d'utiliser du fil élastique

J'ai d'abord essayé avec du sandow (plus pour faire un border-choquer automatique d'ailleurs).

Afin de choquer sous tension, il fallait mettre les sandows sur les lignes servant à border, donc sur les arrières qui servent aussi au contrôle.

Une conséquence est que le contrôle n'était plus précis (mais possible de rééquilibrer avec un jeu de poulie).

Une autre approche est de mesurer la tension dans les lignes, puis de déclencher un moteur si la tension devient trop faible.

Ou encore de faire tourner en permanence un petit moteur avec un couple faible.

Une autre application est de ramener un cerf-volant monofil à terre en cas de chute de vent avec un système "passif".

Je cherchais donc un moteur à ressort de type moteur à barillet, aussi appelé moteur à force constante. Un tel moteur est difficile à trouver (si ce n'est moteur mécano sur le bon coin). J'ai bien trouvé des pièces sur des sites spécialisés mais pour quelques centaines d'euros, alors que ce que je cherche est intégré dans les laisses rétractables, dans le enrouleur à rappel de fil pour les enclos agricoles, ou simplement dans les mètres rubans.
Le mieux étant peut-être l'enrouleur de fil à linge qui va facilement jusqu'à 30m pour environ 15€.

Aujourd'hui j'ai testé une autre solution avec un simple petit mètre ruban avec enrouleur à ressort.

Mètre ruban métallique de 5m
40g de traction quand la longueur est réduite
200 g de traction quand la longueur est augmentée

Mètre ruban souple de 1.5m
20g
120g

Puissance par m2

On me demande quelle taille de cerf-volant est nécessaire pour tirer un grand bateau.

La question comme ça est un peu vague, il faut donc faire des hypothèses.
Un bon début est peut-être de donner la formule donnant la puissance du vent par 1m2. Cela correspond au flux de l'énergie cinétique du vent à travers 1m2

Une première expression est donc celle de la puissance incidente du vent
1/2*rho*v*S*v^3
Pour un vent de 8m/s (15kt) cela donne une puissance de 275W/m2.
Il faut ensuite considérer la limite de Betz qui donne un "rendement théorique" maximal (16/27) qui est dû au fait que toute l'énergie ne peut pas être récupérée. Cela donnerait une puissance théorique max de 163W/m2. La question est ensuite quelle surface de référence prendre.

Dans le cas d'une éolienne c'est généralement la surface balayée par les pâles qui est considérées. Pour un cerf-volant, il faudrait considérer cette surface également, mais comment la caractériser?

Une deuxième approche est de partir du rapport portance sur traînée. C'est l'approche de Loyd en 1980.
A 15kt, 600m2 produiraient 1MW avec un rapport CL/CD de 5 dans l'idéal, soit un peu moins de 2kW par m2. Plus vraisemblablement on peut retenir 1kW (1.4CV) par m2 pour une aile de kite (bien plus pour une aile rigide).

Pour un petit bateau, 4 à 5m2 peuvent donc remplacer un petit moteur 6CV si le vent est là.

Des calculateurs en ligne permettent d'estimer la vitesse du bateau et peut-être d'extrapoler à de plus grands bateaux !



AWEC 2015 (réchauffé...)

Simulateur de kite

KiteSat

Le proto de Rod Read. Il se plie comme une tente deux secondes

Le cerf-volant, l'aile, le planeur, l'avion wing Tec?

L'aile de TU Delft




dimanche 17 mars 2019

RTK moving base suite

J'ai enfin fait quelques tests de performance du GPS RTK.

Sur mes premiers tests, les résultats étaient très décevants, avec une précision de l'ordre du mètre seulement.
Le Rover restait bloqué en RTK Float (qualité n°5 de la trame GGA), jamais en RTK fix.

En creusant un peu sur le net, j'ai vu que la réception du signal devait être de bonne qualité. Et que mes petites antennes seules ne suffisaient pas atteindre la qualité nécessaire, même avec le ciel dégagé.

Pour améliorer la qualité, il faut augmenter le gain de l'antenne. Pour cela il faut utiliser une "ground plate", un support métallique qui permet de concentrer les ondes un peu comme une parabole.
J'ai pu vérifier avec U-Center que les gains augmentaient de manière importante en plaçant un couvercle de boite de gateau sous les antennes GPS (+5dB au moins).

Grâce à cette modification, j'observe une bien meilleure position (variation de l'ordre de +/-10cm, même sans passer en qualité fix (4). Cela n'arrive d'ailleurs quasiment jamais, peut-être 1 seconde de temps en temps. Et je ne semble pas le seul à avoir ce problème.

La précision est satisfaisante sans cela, mais elle peut se dégrader sans que cela soit visible (le HDOP reste autour de 0.7m). A creuser donc.

Autre soucis : la fréquence de retour de la position GPS (renvoyée en RF depuis le Rover vers le PC connecté à la base) est de l'ordre de 2Hz seulement (la fréquence remonte bien à 4Hz comme souhaité quand je coupe l'envoie des messages RTCM ou quand je passe les messages RCTM directement en USB via le PC. La limitation est donc dans le débit en 433MHz et le baurate de 57600).


import serial
import time # Optional (if using time.sleep() below)
import pynmea2
import time

serBase = serial.Serial(port='/dev/ttyACM1', timeout=1)
serRover = serial.Serial(port='/dev/ttyUSB0', timeout=1, baudrate=57600)

buf = ''
while (True):
    if (serBase.inWaiting()>0): #if incoming bytes are waiting to be read from the serial input buffer
        data = serBase.read(serBase.inWaiting())
        x = data.split('$GNGGA')
    serRover.write(x[0]) # RTCM data is sent before nmea
        if len(x)>1:
          try:
            msgBase = pynmea2.parse('$GNGGA'+x[1])
          except:
            pass
    if (serRover.inWaiting()>0): #if incoming bytes are waiting to be read from the serial input buffer
        data = serRover.read(serRover.inWaiting())
    data = buf + data
        if data.find('\r\n')<0:
          buf=data
        else:
          buf=''
          try:
            msgRover = pynmea2.parse(data)
            print ('dNorth: ', float(msgRover.gps_qual),msgRover.horizontal_dil, (float(msgRover.lat)-float(msgBase.lat))*1852)
          except:
            print("An exception occurred", data)
    time.sleep(0.01) # Optional: sleep 10 ms (0.01 sec) once per loop to let other threads on your PC run during this time.

mercredi 12 décembre 2018

RTK moving base

J'ai craqué pour un GPS RTK...

RTK est l'acronyme de Real Time Kinematic. C'est une technique qui permet d'améliorer la précision d'un GPS (appelé Rover), grâce à un deuxième GPS (généralement fixe et appelé Base) à proximité.

L'amélioration de la précision en temps réel est permise grâce à l'envoi de correction de la Base vers le Rover.

Jusqu'à présent c'était une technologie assez couteuse, mais la miniaturisation permet aujourd'hui d'y accéder... pour les bourses bien remplies...

J'ai commandé un GPS "base" et un "rover" chez Drotek (en fait ça fait déjà 2ans, mais ils étaient restés dans un placard...).

J'ai vu qu'il y avait aussi une alternative (reach-rtk) intéressante chez Emlid.
A noter également que la version tiny RTK n'est pas opensource/hardware, et que d'autres versions sont réputées plus ouvertes comme la version smartnav. Mais la version tiny RTK a l'avantage de tout avoir sur une seule puce.

Une fois la commande reçue, première surprise : les cartes sont vraiment toutes petites, même avec le boitier! De quoi en embarquer une sur un drone, ou un cerf-volant. Le plus lourd étant l'antenne (environ 50g), qui semble cependant nécessaire pour avoir un bon signal.

La documentation est disponible sur le site de Drotek.

Il faut commencer par installer le logiciel u-center de u-blox, l'entreprise qui fait la carte du récepteur GPS (neo-M8P).

Une version récente (18.11) existe, mais elle ne correspond pas à la plupart des tutoriels et je l'ai trouvé moins intuitive. Je suis resté sur la version 8.26 (toujours téléchargeable).

Mauvaise surprise : le logiciel n'est disponible que pour PC (et une version pour android également).

Mon dual boot sur Windows étant cassé, et souhaitant rester sur linux/ubuntu, j'installe le logiciel avec Wine.

Après lancement de u-center, le GPS branché en USB n'est cependant pas visible.
J'ai trouvé la solution sur le wiki de Paparazzi, il faut créer un lien symbolique :

ls /dev
En branchant débranchant
mkdir -p ~/.wine/dosdevices
ln -s /dev/ttyACM0 ~/.wine/dosdevices/com1
 
 

On arrive ensuite à se connecter



Cela m'a permis de prendre en main le réglage des (nombreux) paramètres


Mais assez vite je me suis retrouvé face à des difficultés avec des paramètres qui ne pouvaient pas être modifiées (ou plutôt qui revenaient à leurs valeurs initiales). Cela est lié pour une part à la sauvegarde des paramètes dans la mémoire temporaire de la puce, ce qui nécessite de faire "send" (en bas à gauche de la fenêtre) après chaque modification. Avant un redémarrage, il faut également sauver les paramètres dans les mémoires plus durables de la puce.



Une bonne chose est qu'il est possible de retourner à une configuration de base, ce qui après avoir essayé de changer un peu tous les paramètres (et ne plus trop savoir lesquels) est bien utile.



Je n'en suis pas sûr, mais il m'a semblé qu'il était bon de repasser par la configuration de base pour avoir un comportement plus stable, par exemple avant une mise à jour du firmware.



Je me suis retrouvé en difficulté lors de la mise à jour du firmware. En effet, ma version datant un peu, le firmware présent ne permettait pas de faire du RTK en moving base. Il fallait donc faire une mise à jour du firmware, vers la dernière version 3.01 HPG 1.40 mais celle-ci échouait systèmatiquement.



Je pense que cela était en partie liée au fait que la carte rebootait avant la mise à jour, ce qui empêchait le lien symbolique de fonctionner. La fenêtre de mise à jour devient rouge, mais parfois rien n'indique clairement qu'il y a eu un problème. Après de nombreux essais, j'ai donc trouvé un autre PC pour pouvoir utiliser windows et m'affranchir des problèmes qui pourraient être liés à une utilisation avec Linux.

Malheureusement, pas plus de succès avec Windows au début, ni avec les versions plus récentes de U-Center qui présentent un nouvel outil de mise à jour.

D'après certains commentaires sur des forums, le problème vient de l'utilisation du port USB et non du port série (UART), et éventuellement de problème de driver selon la version de Windows (guère mieux que Linux au final!). Mais pourtant certains clamaient avoir réussi la mise à jour de la même carte de Drotek.

En reprenant ces paramètres de base, et à force d'essayer cela a fini par marché dans certains conditions, mais sans que cela soit 100% reproductible.

Cela a marché lorsque je lançais une première fois la mise à jour avec les paramètres suivants :
Au moment du reboot, windows indiquait une erreur de driver (en bas à droite), puis la mise à jour échouait après un timeout. Le gps n'était alors plus reconnu par windows et automatiquement déselectionné de U-Center.
Je débranchais ensuite la prise USB, puis la rebranchais. Le port com réapparaisait et je réselectionnais le GPS. Je relançais une mise à jour, mais cette fois en choisissant de faire la mise à jour par le port USB.




Et là parfois, victoire, une barre de défilement apparait et à la fin l'écran devient vert. Il était enfin temps de passer à l'étape suivante.
 

Par défaut, le récepteur GPS envoie des trames NMEA que l'on peut voir passer dans la "Packet console".



Cette configuration par défaut est adaptée pour le Rover, mais pour la base, il faut enlever ces trames NMEA afin de ne pas gêner les messages RTCM (selon débit de la communication).

Pour cela, le plus rapide est d'aller dans la "Message view". On y voit un arborescence avec les différentes messages existants. Les messages effectivement envoyés sont en noir, ce qui ne sont pas envoyés en gris.



Pour les (nombreux) messages NMEA, il est possible de les déleselectionner directement ici (ce qui est beaucoup moins laborieux que la méthode détaillée plus bas).



Ceci stoppe les messages (et donc la mise à jour des infos dans les fenêtres de droite qui se mettaient à jour si votre antenne était en vu des satellites).

Pour passer en Moving Base, il faut utiliser le réglage suivant :


Puis autoriser les messages RTCM nécessaires :

Extrait du doc du C94-M8P
Dans mon cas, j'ai sélectionné le port USB pour faire mes tests.


J'ai utilisé un script python pour forwarder les correction du GPS Base vers le GPS Rover à travers mon PC

import serial
import time # Optional (if using time.sleep() below)

serBase = serial.Serial(port='COM16', timeout=1)
serRover = serial.Serial(port='COM17', timeout=1)

while (True):
    if (serBase.inWaiting()>0): #if incoming bytes are waiting to be read from the serial input buffer
        data = serBase.read(serBase.inWaiting())
        #data_str = data.decode('ascii') #read the bytes and convert from binary array to ASCII
        print(data) #print the incoming string without putting a new-line ('\n') automatically after every print()
        serRover.write(data)
    if (serRover.inWaiting()>0): #if incoming bytes are waiting to be read from the serial input buffer
        data_str = serRover.read(serRover.inWaiting()).decode('ascii') #read the bytes and convert from binary array to ASCII
        print(data_str)
    time.sleep(0.01) # Optional: sleep 10 ms (0.01 sec) once per loop to let other threads on your PC run during this time. 

Après quelques essais en extérieur, j'ai bien la qualité du signal gps (dans la trame GGA) passer de 1 à 2 ou 5.

Doc récepteurs de la série M8

Doc M8P

Doc de chez sparkfun 

Doc carte d'évaluation

Doc uCenter

samedi 22 septembre 2018

ArmorKite au Grand Pavois 2018

Un petit message de l'équipe ArmorKite :

"L’équipe d’ArmorKite et ses deux bateaux AK-650 seront présents au salon nautique du Grand Pavois 2018 du 26 septembre au 01 octobre avec un bateau à flot sur le port des exposants et un bateau en démonstration.

Au programme : 
  • Présentation de l’AK-650
  • Essais en mer (sur réservation)
  • Présentation des futures options
  • Visite du bateau
N’hésitez pas à les contacter pour réserver une sortie en mer.


Si vous ne l'avez pas encore lu venez également découvrir l'article de Voiles et Voiliers sur ArmorKite en cliquant ici!
A très bientôt sur l'eau. "

J'y serai également, ainsi que d'autres passionnés de kiteboat. Viendez!