Le forum français des radios FrSKY

Traker d'antenne (suivi du modèle) en LUA

Voir le sujet précédent Voir le sujet suivant Aller en bas

Traker d'antenne (suivi du modèle) en LUA

Message par nicephore le Mar 2 Sep 2014 - 8:20

Bonjour,
En LUA est-il possible de récupérer des informations (GPS, ALTITUDE) sur la prise écolage en vue de réaliser un traker d'antenne (ou suivi du modèle en vol afin d'orienter une antenne directive vers ce dernier) à l'aide de deux servo.
Comment vériez vous la chose ?
Je ne dipose pas de vario ni de gps sur mon F450 aussi je ne peux réaliser la chose, mais je pense que ceci peux être fort intéressant.

Cordialement Nicéphore.


EDIT du 19/03/2015

Bonjour,
Le soleil est arrivé chez moi en campagne le weekend dernier ce qui m’a permis de faire le premier test de mon « tracker d’antenne LUA »

MONTAGE DU TRACKER

Pour ma part j’ai utilisé une nacelle PAN / TILT de chez HK

[Vous devez être inscrit et connecté pour voir ce lien]

Les deux servo qui composent cet ensemble sont dit des servo 160° mais en fait NON ils font 90° (ils sont sympas chez HK). J’ai donc modifié ces 2 servo afin qu’ils puissent faire 180° (voir plus) à l’aide de deux résistances variable de 5K (cf. image ci-dessous)

[Vous devez être inscrit et connecté pour voir ce lien]

La valeur des résistances variable doit être égale à la valeur du potentiomètre du servo.
Il faut régler le débattement: Régler les ajustables que vous avez ajoutées à la valeur zéro. Connecter le servo au récepteur. Allumer l'émetteur de la radio. Mettre le récepteur sous tension. Celui-ci se positionne au neutre.
Déplacer le manche à fond dans un sens et le maintenir ainsi. Agir lentement sur le réglage d'un des reglages. Si le déplacement revient vers la position neutre, recommencer l’opération avec l'autre. Si le déplacement augmente alors continuer jusqu'à la position maxi désirée. ATTENTION en aucuns cas n’aller jusqu'à ce que le servo soit en butée. Il est nécessaire de vérifier qu'une modification du trim n'engendre pas ce problème. Mettre le manche en position neutre. Si le servo revient vers la position neutre sans l'atteindre alors régler l'autre ajustable de façon à ce qu’il revienne à la position neutre initiale. Le réglage est terminé.
J’ai également utilisé un autre bras pour le servo TILT car après passage à 180° le bras d’origine tombe en butté sur le support de fixation du servo (côté gauche sur la photo ci-dessus).
Vous devez disposer aussi des informations GPS (longitude, latitude, altitude) pour le bon fonctionnement du script LUA. Perso, j’ai opté pour le sensor GPS FrSKY

[Vous devez être inscrit et connecté pour voir ce lien]

Mais si vous disposez d’un NAZA, vous pouvez également récupérer ces informations et bien d’autre. Suivez les instructions proposées par Sylvain (alias DJSYL):

[Vous devez être inscrit et connecté pour voir ce lien]

ou depuis un module zaggotelemetry :
[Vous devez être inscrit et connecté pour voir ce lien]

ou encore depuis le CAN BUS du NAZA :
[Vous devez être inscrit et connecté pour voir ce lien]


LE SCRIPT LUA :


Code:
--[[
   Tracker d’antenne LUA
   Version 1.0
   Bruno Van de Velde et les membres du forum http://frskytaranis.forumactif.org
]]

local function round(val, decimal) -- fonction arrondir
  -- non utilisée mais conserve pour l’avenir
  if (decimal) then
    return math.floor( (val * 10^decimal) + 0.5) / (10^decimal)
  else
    return math.floor(val+0.5)
  end
  
end --end function round(val, decimal)

local function map2(val, fromLow, fromHigh, toLow, toHigh)
  
  return (val - fromLow) * (toHigh - toLow) / (fromHigh - fromLow) + toLow;
  
end --end function map2(val, in_min, in_max, out_min, out_max)

local function get_gps_home_info()

  local HOME_lat = 0
  local HOME_lon = 0
  
  HOME_lat     = getValue("pilot-latitude")    -- récup. LATITUDE, LONGITUDE de station de base                            
  HOME_lon     = getValue("pilot-longitude")
    
  return HOME_lat, HOME_lon  

end --end function get_gps_home_info()

local function get_gps_uav_info()
  
  local UAV_Lat = 0
  local UAV_Lon = 0
  local UAV_alt = 0
  
    UAV_Lat      = getValue("latitude")          -- récup. LATITUDE, LONGITUDE, ALTITUDE du modèle
    UAV_Lon      = getValue("longitude")  
    UAV_alt      = getValue("gps-altitude")
  
  return UAV_Lat, UAV_Lon, UAV_alt  

end --end function get_gps_uav_info()

local function calc_pan_tilt(lon1, lat1, lon2, lat2, alt)
  
  local R = 6371000.0    --rayon de la terre 6371km
  local a, tc1, c, dist, dLat, dLon, azimut, elev
  dist = 0
  
  lon1=lon1/180*math.pi
  lat1=lat1/180*math.pi
  lon2=lon2/180*math.pi
  lat2=lat2/180*math.pi
  
  a = math.atan2(math.sin(lon2-lon1)*math.cos(lat2), math.cos(lat1)*math.sin(lat2)-math.sin(lat1)*math.cos(lat2)*math.cos(lon2-lon1))
  azimut  = a*180/math.pi
  if (azimut  < 0) then
    azimut = math.floor(360 + azimut)
  end
 
-- Calcul de la distance en l'UAV et la station de base (home)
  dLat = (lat2-lat1)
  dLon = (lon2-lon1)
  a = math.sin(dLat/2) * math.sin(dLat/2) + math.sin(dLon/2) * math.sin(dLon/2) * math.cos(lat1) * math.cos(lat2)
  c = 2* math.asin(math.sqrt(a))
  dist = 6371000 * c
  elev = math.atan(alt/dist)
  elev = math.floor(elev*360/(2*math.pi))
 
  return azimut , elev, dist

end --end function calc_pan_tilt()

local function azimut_elev_to_ppm(azimut, elev)
  
  local azimut_ppm_value = 0
  local elev_ppm_value   = 0
  
  if (azimut >= 270 and azimut <= 360) or (azimut >= 0 and azimut <= 90) then
    if (azimut >= 1 and azimut <= 90) then
      azimut_ppm_value = math.floor(map2(azimut, 0, 90, 0, 1024))
    else
      azimut_ppm_value = math.floor(map2(azimut, 270, 360, -1024, 0))
    end
    elev_ppm_value = math.floor(map2(elev, 0, 90, -1024, 0))
  else
    if (azimut >= 90 and azimut <= 180) then
      azimut_ppm_value = math.floor(map2(azimut, 90, 180, -1024, 0))
    else
      azimut_ppm_value = math.floor(map2(azimut, 180, 270, 0, 1024))
    end
    elev_ppm_value = math.floor(map2(elev, 90, 0, 0, 1024))
  end
  
  return azimut_ppm_value, elev_ppm_value

end -- end azimut_elev_to_ppm()

local function run()
  
  local HOME_lat          = 0
  local HOME_lon          = 0
  local UAV_Lat           = 0
  local UAV_Lon           = 0
  local UAV_alt           = 0
  local AZIMUT            = 0
  local ELEV              = 0
  local DIST              = 0
  local AZIMUT_PPM_VALUE  = 0
  local ELEV_PPM_VALUE    = -1024
  
  HOME_lat, HOME_lon = get_gps_home_info()
  
  if (HOME_lat ~= 0) and (HOME_lon ~= 0) then
    
    UAV_Lat, UAV_Lon, UAV_alt = get_gps_uav_info()
    
    if UAV_alt < 0 then
      
      UAV_alt = 0
      
    end
    
    AZIMUT, ELEV, DIST = calc_pan_tilt(HOME_lon, HOME_lat, UAV_Lon, UAV_Lat, UAV_alt)
    
    AZIMUT_PPM_VALUE, ELEV_PPM_VALUE = azimut_elev_to_ppm(AZIMUT, ELEV)
  else
    AZIMUT_PPM_VALUE = 0
    ELEV_PPM_VALUE   = -1024
  end
  
  return AZIMUT_PPM_VALUE, ELEV_PPM_VALUE
  
end --end function run()

return { run=run, output={ "PAN", "TILT"} }

PARAMETRAGE TARANIS & BIND X8R :

Sur le modèle un récepteur X8R bindé en mode 4 (avec les jumpers sur CH1&CH2, CH3&CH4) ce qui nous donne une configuration :

• 8 voies en SBUS
• 8 voies en traditionnel
• Avec télémétrie

Sur la station au sol un X8R bindé en mode 3 (avec les jumpers sur CH1&CH2) ce qui nous donne  une configuration :

• 8 voies en SBUS
• 8 voies en traditionnel
• Sans télémétrie

C’est deux récepteurs sont bindé sur le même model depuis la Taranis et avec le même ID (cf. image ci-dessous)

[Vous devez être inscrit et connecté pour voir ce lien]

Il est important que les voies du récepteur de la station de base qui vont commander les servo PAN et TILT du tracker ne soient pas utilisés sur votre modèle.
Dans mon cas j’utilise les voies 15 et 16 pour commander mes servo PAN et TILT.

MISE EN PLACE DU SCRIPT :
Déposer le script dans le répertoire SCRIPTS\MIXES de votre carte SD puis placer vous en page 12/13 (CUSTOM SCRIPT) de votre modèle et sélectionné le script (cf. images ci-dessous)

[Vous devez être inscrit et connecté pour voir ce lien]

[Vous devez être inscrit et connecté pour voir ce lien]

CONFIGURATION DES VOIES:

Placer vous en page 6/13 de votre modèle (cf. image ci-dessous)

[Vous devez être inscrit et connecté pour voir ce lien]

Nous allons ici utiliser la voie 15 pour le servo PAN et la voie 16 pour le servo TILT.
CES DEUX VOIES NE DOIVENT ETRE UTILISEE SUR VOTRE MODELE
Sélectionnez la voie 15 et éditer là afin de la paramétrer (cf. image ci-dessous)
Mix Name : pan (mais ce n’est pas une obligation de nommer la voie)
Source : sélectionnez l’entrée IPAN

[Vous devez être inscrit et connecté pour voir ce lien]

Répétez l’opération sur la voie 16 pour le TILT. Ce qui nous donne :

[Vous devez être inscrit et connecté pour voir ce lien]

SUR LE TERRAIN :

Allumez la radio, alimentez les servo PAN / TILT du tracker, les servo se positionnent (au centre pour le PAN et en position basse pour le TILT).
Posez voter model prés de votre station de base et alimentez le.
Attendez le fixe GPS (cf. image ci-dessous accessible depuis un appui long sur PAGE)

[Vous devez être inscrit et connecté pour voir ce lien]

Placez enfin votre modèle à son point de décollage, l’antenne du tracker devant pointer dans sa direction.
Vous pouvez décoller et effectuer des translations avec votre modèle, le tracker doit le suivre.
Selon le sens ou vous aurez monté vos servo il est possible que le tracker pointe à l’ opposé de la direction de votre modèle dans ce cas pas grave inversez la voie PAN  et / ou TILT en conséquence.

Merci à AleX pour sa proposition de binder deux récepteurs sur le même modèle (proposition qui à donner renaissance à ce projet).
Merci également à Sacre100 pour ses réponses à mes questions concernant LUA.
Merci à DJSYL qui m’a également partagé ses expériences LUA, électronique, paramétrage Taranis et autre test dans le froid fait au club AMV94 de Villeneuve St Georges.

La prochaine évolution est déjà prévue :
Ajout d’un Diversity qui sera réalisé sur la base d’un Arduino.


Dernière édition par nicephore le Jeu 19 Mar 2015 - 12:38, édité 2 fois

nicephore

Messages : 607
Date d'inscription : 14/06/2014
Localisation : Créteil

Revenir en haut Aller en bas

Re: Traker d'antenne (suivi du modèle) en LUA

Message par Sacre100 le Mar 2 Sep 2014 - 9:18

A mon avis oui, mais faut savoir que l'envoi des données par le GPS Frsky se fait toutes les secondes ou quelque chose comme ça alors suivant la vitesse de l'engin, le tracker d'antenne risque d'être en retard dans ses déplacements.

C'est ce que j'ai constaté avec mon script qui m'alerte quand je m'approche trop près d'un point GPS, le système m'annonce bien les choses mais trop tard.
avatar
Sacre100

Messages : 1889
Date d'inscription : 30/11/2013
Age : 60
Localisation : Blonay - Suisse

Revenir en haut Aller en bas

Re: Traker d'antenne (suivi du modèle) en LUA

Message par nicephore le Mar 2 Sep 2014 - 14:05

Bonjour Sacre100
Toutes les secondes, ha dommage ... je vais donc passer par autre chose comme arduino par exemple. Je vais dans un premier temps me trouver un vario frSKY et un GPS et voir comment récupérer les info pour les injecter dans l'arduino puis en modulation FSK dans la voie audio d'un TX vidéo (que j'ai pas encore).
A+ Nicéphore

nicephore

Messages : 607
Date d'inscription : 14/06/2014
Localisation : Créteil

Revenir en haut Aller en bas

Re: Traker d'antenne (suivi du modèle) en LUA

Message par Sacre100 le Mar 2 Sep 2014 - 16:47

Hello Nicophore,

Vario Frsky, OK, il est correct. GPS Frsky, pas sûr car c'est le soft du GPS qui a ce fréquence de rafraichissement trop lent.

Si tu passes par Arduino, autant avoir un GPS "classique" qui peut facilement tourner à 10hz. Il y a des librairies pour l'Arduino qui sortent du s.port, je ne sais pas ce que cela vaut.

Si tu te lances dans la chose, cela m'intéresse beaucoup car j'ai un Arduimu V3 et un GPS qui trainent dans une boite et qui seraient tout content de reprendre du service.

@+ Marco
avatar
Sacre100

Messages : 1889
Date d'inscription : 30/11/2013
Age : 60
Localisation : Blonay - Suisse

Revenir en haut Aller en bas

Re: Traker d'antenne (suivi du modèle) en LUA

Message par nicephore le Mer 3 Sep 2014 - 7:34

Marco,
OK j'ai une Arduino Uno et un GPS, l'acquisition des données GPS est OK déjà mais j'ai pour le moment pas encore de vario je préfère passer par un vario car les données GPS Altitude ne me semble pas précises (des écarts trop importants).
Suite dès que j'ai un vario.

nicephore

Messages : 607
Date d'inscription : 14/06/2014
Localisation : Créteil

Revenir en haut Aller en bas

Re: Traker d'antenne (suivi du modèle) en LUA

Message par Sacre100 le Mer 3 Sep 2014 - 11:55

La plupart des tracker d'antenne utilisent l'altitude des GPS et cela semble suffisant, les antennes rayonnent ou captent les ondes dans cône suffisamment large même les antennes directionnelles.

Et puis, tel qu'est fait le protocole s.port, rien ne t'empêche de commencer avec uniquement le GPS puis dans un deuxième temps, avec GPS et vario. La connexion GPS seul, tu la feras directement de l'Arduino vers le récepteur. Avec le vario, tu connecteras l'Arduino sur le vario puis le vario sur le récepteur.

Dans le script, il suffira d'avoir une variable qui indique si le vario est présent et qui déclanche les traitement en conséquence. L'avantage, c'est que ceux qui utiliseront ta solution pourront le faire selon leur configuration, avec ou sans vario.

Une autre chose possible, c'est d'avoir une connexion sans fil avec le tracker d'antenne. Pour cela, je ne sais pas si l'on peut binder 2 récepteurs sur le même module d'émission ou s'il faut avoir un deuxième module.
avatar
Sacre100

Messages : 1889
Date d'inscription : 30/11/2013
Age : 60
Localisation : Blonay - Suisse

Revenir en haut Aller en bas

Re: Traker d'antenne (suivi du modèle) en LUA

Message par nicephore le Mer 19 Nov 2014 - 9:43

Bonjour,
De mon coté j'avance. Mais mon GPS (un PA6C) est cassé suite à une chute. Mais le codage et décodage des informations en FSK est OK, je dois encore faire mes adaptations de niveau afin de faire mes 1er essais avec mon TX 5.8Ghz.
La suite prochainement ...

nicephore

Messages : 607
Date d'inscription : 14/06/2014
Localisation : Créteil

Revenir en haut Aller en bas

Re: Traker d'antenne (suivi du modèle) en LUA

Message par nicephore le Jeu 19 Mar 2015 - 11:42

MAJ du #post1 avec les dernières évolutions.

nicephore

Messages : 607
Date d'inscription : 14/06/2014
Localisation : Créteil

Revenir en haut Aller en bas

Re: Traker d'antenne (suivi du modèle) en LUA

Message par Sacre100 le Jeu 19 Mar 2015 - 12:26

Jolie réalisation, bravo et ça me plait d'autant plus que c'est hyper simple, le script ne fait que quelques lignes.

Si tu as envie de faire connaitre ton script, tu peux le mettre sur [Vous devez être inscrit et connecté pour voir ce lien]
avatar
Sacre100

Messages : 1889
Date d'inscription : 30/11/2013
Age : 60
Localisation : Blonay - Suisse

Revenir en haut Aller en bas

Re: Traker d'antenne (suivi du modèle) en LUA

Message par nicephore le Jeu 19 Mar 2015 - 12:50

Merci Marco.

nicephore

Messages : 607
Date d'inscription : 14/06/2014
Localisation : Créteil

Revenir en haut Aller en bas

Re: Traker d'antenne (suivi du modèle) en LUA

Message par thierryhl le Jeu 19 Mar 2015 - 12:56

je suis toujours admiratif devant des travaux fait maison.
Chapeau bas nicephore.

ps : au moins là, je suis abonné au sujet Cool
avatar
thierryhl

Messages : 515
Date d'inscription : 09/11/2014
Age : 57
Localisation : Dinan

Revenir en haut Aller en bas

Re: Traker d'antenne (suivi du modèle) en LUA

Message par furynick le Ven 20 Mar 2015 - 6:39

Très astucieux, en récupérant la télémétrie d'un APM/Pix plus besoin d'un module GPS ni d'un vario ça me plait beaucoup !

furynick

Messages : 134
Date d'inscription : 04/02/2015
Age : 41
Localisation : TLS

http://www.avis-produits-chinois.fr

Revenir en haut Aller en bas

Re: Traker d'antenne (suivi du modèle) en LUA

Message par djsyl le Ven 20 Mar 2015 - 7:22

On en avait parler déjà Furynick

avec les 2 prog en teensy 3.01 pour Naza et Dropix/APM de récuperation de télémetrie pour Frsky c'est de la balle
avatar
djsyl

Messages : 1322
Date d'inscription : 11/12/2014
Age : 58
Localisation : Yerres (91330)

http://club-aquilon.fr

Revenir en haut Aller en bas

Re: Traker d'antenne (suivi du modèle) en LUA

Message par furynick le Ven 20 Mar 2015 - 7:40

Oui j'avais vu passer ça mais comme je n'avais pas encore de Taranis je n'avais que survolé

furynick

Messages : 134
Date d'inscription : 04/02/2015
Age : 41
Localisation : TLS

http://www.avis-produits-chinois.fr

Revenir en haut Aller en bas

Re: Traker d'antenne (suivi du modèle) en LUA

Message par nicephore le Ven 20 Mar 2015 - 7:46

Bonjour,
Par contre il est plus judicieux d'utiliser un autre GPS que celui de FrSKY car effectivement il n'est pas très rapide (je vais passer par le décodage du GPS Naza via le CAN Bus du PMU).
Mais ça marche.

nicephore

Messages : 607
Date d'inscription : 14/06/2014
Localisation : Créteil

Revenir en haut Aller en bas

Re: Traker d'antenne (suivi du modèle) en LUA

Message par Heisenberg le Ven 21 Aoû 2015 - 13:20

Ce truc est génial pour le long-range car avec peu de modif et un servo à 360°, il peut aussi permettre de placer une tourelle sur le modèle et orienter une antenne directive vers le pilote Very Happy

Seul point négatif, c'est qu'en config LR, la télémétrie est indisponible.

On peut donc imaginer une tourelle au sol ET une tourelle sur le modèle qui orienterait 2 antennes chacune pour les datas FrSky ET la retransmission vidéo.

En oubliant la législation en vigueur, avec un petit ampli en plus de chaque côté sur la liaison data (et c'est même pas sur que ce soit nécessaire), ça peut faire facilement une 10aine de km voire plus en sachant qu'avec une simple 5db omni, on passe déjà les 6km...

Inutile pour un multicoptère limité par la batterie, mais ça fait rêver pour un grand planeur...
avatar
Heisenberg

Messages : 1459
Date d'inscription : 30/07/2015
Age : 45
Localisation : Lille

http://tinyurl.com/TARANIS-HEISENBERG

Revenir en haut Aller en bas

Re: Traker d'antenne (suivi du modèle) en LUA

Message par nicephore le Ven 21 Aoû 2015 - 13:38

Heisenberg,
Au début je voulais transporter les informations via la voie audio du VTX 5.8 (en modulation FSK via une platine Arduino). Mais j'ai fini par faire ça afin de n'avoir aucun fil à la patte.

nicephore

Messages : 607
Date d'inscription : 14/06/2014
Localisation : Créteil

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum