Programmation servo pour une gauge non linéaire

Questions de programmation / Offset FSUIPC et IOCP

Programmation servo pour une gauge non linéaire

Messagede FiX » Dim 29 Juin 2014 16:30

Je sèche un peu sur la programmation de ma gauge airspeed, qui, comme certaines gauges, n'ont pas une échelle de graduation linéaire.
J'ai relevé les différentes valeurs de positionnement du servo par rapport aux graduations de vitesses et j'ai calculé les écarts mais je n'ai pas trouvé de "fonction" mathématique (bon de toute façon, les maths, c'est pas mon truc...) qui permettrait de programmer facilement.
Je pense donc qu'il doit falloir "découper" le programme en plusieurs parties, par groupes de fonctions linéaires, mais en pratique je ne sais pas trop comment m'y prendre.

Voici mes relevés:

(Knots sur la gauge / position du servo)

00 / 990
10 / 970
20 / 950
30 / 930
40 / 908
50 / 863
60 / 803
70 / 743
80 / 668
90 / 593
100 / 514
110 / 435
120 / 356
130 / 272
140 / 197

On voit qu'entre 50/60/70 kts c'est linéaire, ainsi qu'entre 70/80/90 et enfin entre 90/100/110.
Pour le reste les graduations ont des écarts qui leurs sont propres.
i7 2600k/P8P67pro/16Go PC3 17000/RX 580/SSD 250 Go et 120Go/W10x64
https://www.facebook.com/cessna150.sim
Avatar de l’utilisateur
FiX
 
Messages: 4664
Inscription: 8/01/10
Localisation: Reims/Maubeuge

Re: Programmation servo pour une gauge non linéaire

Messagede A320 hérétique » Dim 29 Juin 2014 17:53

Hello Fix,

Dans le principe :

Var 1 Link servo ...
Var 2 link gauge ...
{
if 0 <= &gauge
{
if &gauge < 10
{
&servo = 990 + (990 - 970)*(&gauge - 0)/(10-0)
}
}

if 10 <= &gauge
{
if &gauge < 20
{
&servo = 970 + [970 - 950)*[gauge - 10)/(20-10)
}
}
etc ...

}

évidement un peu bourin, mais ...

Mais je ne sais pas comment réagit SIOC par rapport à des variations continues (en l'occurrence, de gauge) ; si pb, peut-être un timer toutes les 1/10 s (ou plus court si ça saccade) dans lequel tu mets le corps des calculs.

Michel
http://www.myA320sim.com
Simu mixte P3D/FS2020, serveur P3Dv4/A320 FMGS (7700k et GTX 1070 sous W10 64), client P3Dv4/FS2020 (i9-12900K et RTX 3080 Ti sous W10 64), 3 vdp Optoma GT1080E, client A320 FMGS (2600k sous W10 64).
Avatar de l’utilisateur
A320 hérétique
 
Messages: 3353
Inscription: 2/09/12
Localisation: Pornic

Re: Programmation servo pour une gauge non linéaire

Messagede FiX » Lun 30 Juin 2014 21:54

Merci Michel.
Oui, c'est ce à quoi je pensais.
Je viens de tester et c'est pas génial, la fluidité en prend pour son grade, c'est le moins que l'on puisse dire... On a des gros a-coups quand on passe d'un "groupe" de vitesse à un autre. peurefrayé

Va falloir trouver autre chose.
Je n'ai pas compris ce que tu proposais avec le timer?
i7 2600k/P8P67pro/16Go PC3 17000/RX 580/SSD 250 Go et 120Go/W10x64
https://www.facebook.com/cessna150.sim
Avatar de l’utilisateur
FiX
 
Messages: 4664
Inscription: 8/01/10
Localisation: Reims/Maubeuge

Re: Programmation servo pour une gauge non linéaire

Messagede A320 hérétique » Lun 30 Juin 2014 23:04

Fix,
Plutôt que de dérouler le code à chaque variation minime de gauge, tu le fais systématiquement tous les 1/10s, ou plus si saccade, grâce à un timer, ça devrait être plus fluide.
Pour les a-coups, je n'avais pas fait attention, c'est vrai que c'est pas du tout linéaire, donc il faudrait lisser, ou alors trouver la fonction générale .... à réfléchir
Michel
http://www.myA320sim.com
Simu mixte P3D/FS2020, serveur P3Dv4/A320 FMGS (7700k et GTX 1070 sous W10 64), client P3Dv4/FS2020 (i9-12900K et RTX 3080 Ti sous W10 64), 3 vdp Optoma GT1080E, client A320 FMGS (2600k sous W10 64).
Avatar de l’utilisateur
A320 hérétique
 
Messages: 3353
Inscription: 2/09/12
Localisation: Pornic

Re: Programmation servo pour une gauge non linéaire

Messagede rockclodbuster » Mar 1 Juil 2014 07:17

tu ne pourrais pas bêtement remplacer la graduation de la gauge pour la rendre linéaire a la place de te casser la tete avec la prog?
rockclodbuster
 
Messages: 29
Inscription: 14/05/11
Localisation: témiscaming, québec

Re: Programmation servo pour une gauge non linéaire

Messagede fab » Mar 1 Juil 2014 07:50

Fix, si tu as un peu de patience, sur le bus que tu vas récupérer pour tester ton VOR,tu auras la possibilité de mettre des jauges non linéaire ...
C'est un driver sur le PC, écrit en C, qui s'occupe des calculs de lissage.
A voir ici : https://www.youtube.com/watch?v=DRavM_5KHVg

Fabien
Avatar de l’utilisateur
fab
 
Messages: 4414
Inscription: 26/12/12
Localisation: Roubaix

Re: Programmation servo pour une gauge non linéaire

Messagede A320 hérétique » Mar 1 Juil 2014 09:25

Bonjour Fix,

Oui, effectivement, SIOC est trop pauvre pour envisager une interpolation un peu évoluée.

Mais en regardant la courbe j'ai l'impression qu'au prix d'une petite concession autour de f(5) il devrait y avoir moyen d'avoir qquechose d'à peu près régulier avec 3 segments de droite (1 à 4, 4 à 6, 6 à 15) ... ? tu peux essayer en conservant le code mais avec seulement 4 points (1, 4, 6, 15) ; et en y réfléchissant, il me semble aussi important de passer par le timer.
Image



Michel
http://www.myA320sim.com
Simu mixte P3D/FS2020, serveur P3Dv4/A320 FMGS (7700k et GTX 1070 sous W10 64), client P3Dv4/FS2020 (i9-12900K et RTX 3080 Ti sous W10 64), 3 vdp Optoma GT1080E, client A320 FMGS (2600k sous W10 64).
Avatar de l’utilisateur
A320 hérétique
 
Messages: 3353
Inscription: 2/09/12
Localisation: Pornic

Re: Programmation servo pour une gauge non linéaire

Messagede FiX » Mar 1 Juil 2014 09:33

A320 hérétique a écrit:Fix,
Plutôt que de dérouler le code à chaque variation minime de gauge, tu le fais systématiquement tous les 1/10s, ou plus si saccade, grâce à un timer, ça devrait être plus fluide.
Pour les a-coups, je n'avais pas fait attention, c'est vrai que c'est pas du tout linéaire, donc il faudrait lisser, ou alors trouver la fonction générale .... à réfléchir
Michel



Je peux toujours essayer, mais je ne vois pas en quoi ça va changer le problème de passage d'un groupe à un autre.
Parce que lorsque je suis dans un groupe linéaire, c'est bien fluide. C'est au changement de groupe que ça foire.
Si j'ai bien compris, le timer (je n'ai jamais utilisé cette fonction) permet de dérouler le code tous les "x" secondes, donc ça serait plutôt pour éviter les petites variations ou les petites vibrations que l'on pourrait avoir sur le servo.
Là, c'est pas ce que je veux éviter.
Le problème c'est de "lisser" le passage d'un groupe à un autre.

Tu n'as pas un exemple de code de timer sous la main que je vois à quoi ça ressemble? Je vais quand même essayer.
i7 2600k/P8P67pro/16Go PC3 17000/RX 580/SSD 250 Go et 120Go/W10x64
https://www.facebook.com/cessna150.sim
Avatar de l’utilisateur
FiX
 
Messages: 4664
Inscription: 8/01/10
Localisation: Reims/Maubeuge

Re: Programmation servo pour une gauge non linéaire

Messagede FiX » Mar 1 Juil 2014 09:35

rockclodbuster a écrit:tu ne pourrais pas bêtement remplacer la graduation de la gauge pour la rendre linéaire a la place de te casser la tete avec la prog?


Ah bah non, ce sont des gauges réelles, tout l'intérêt c'est leur esthétique et le fait que ce soit la vraie... cligneoeil
i7 2600k/P8P67pro/16Go PC3 17000/RX 580/SSD 250 Go et 120Go/W10x64
https://www.facebook.com/cessna150.sim
Avatar de l’utilisateur
FiX
 
Messages: 4664
Inscription: 8/01/10
Localisation: Reims/Maubeuge

Re: Programmation servo pour une gauge non linéaire

Messagede FiX » Mar 1 Juil 2014 09:38

A320 hérétique a écrit:Bonjour Fix,

Oui, effectivement, SIOC est trop pauvre pour envisager une interpolation un peu évoluée.

Mais en regardant la courbe j'ai l'impression qu'au prix d'une petite concession autour de f(5) il devrait y avoir moyen d'avoir qquechose d'à peu près régulier avec 3 segments de droite (1 à 4, 4 à 6, 6 à 15) ... ? tu peux essayer en conservant le code mais avec seulement 4 points (1, 4, 6, 15) ; et en y réfléchissant, il me semble aussi important de passer par le timer.

Michel


En fait je n'ai déjà que 5 segments, passer à 4 ne changerait pas grand chose.
Le problème arrive dès le premier segment.
C'est vraiment le passage d'un segment à un autre qui fait le chantier, même avec un seul segment.
C'est vraiment bizarre d'ailleurs, je ne comprend pas pourquoi il y a un tel à-coup en passant d'un segment à un autre.
Je viens de me rendre que j'avais déjà codé 2 segments pour mon VSI qui n'était pas linéaire non plus et il est super fluide. gratgrat
i7 2600k/P8P67pro/16Go PC3 17000/RX 580/SSD 250 Go et 120Go/W10x64
https://www.facebook.com/cessna150.sim
Avatar de l’utilisateur
FiX
 
Messages: 4664
Inscription: 8/01/10
Localisation: Reims/Maubeuge

Suivante

Retourner vers Programmation Sioc





Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités