Configuration matérielle

De Vigiwiki

Note : Vous pouvez demander sur le Discord de Vigibot (lien présent en haut du site) pour d'amples informations ou pour demander de l'aide. Les options à ne pas modifier ne sont pas écrites (il y a beaucoup de possibilités) ! Si vous souhaitez modifier une option qui n’apparaît pas ici, merci de vous adresser aux admins Vigibot ou aux utilisateurs avancés.

Confhard2.jpeg
  • DEBUG : Ecrire les logs sur la micro SD
  • TELEDEBUG : Ecrire les logs sur le serveur www.vigibot.com
  • CAMERAS :

TYPE : vide

SOURCE : 0 correspond à votre caméra Raspberry Pi et 1 est l'affichage du "port HDMI tty0 " également appelé "FrameBuffer".

WIDTH : Définir la largeur de votre résolution. NE PAS TOUCHER

HEIGHT : Définir la hauteur de votre résolution. NE PAS TOUCHER

FPS : Définir le nombre d'images par seconde. NE PAS TOUCHER

BITRATE : Définir la qualité vidéo. POUR VOUS DONNER UNE IDÉE, METTRE 500000 POUR UNE ADSL2+ diminuez de 50000 en 50000 si votre connexion rame. Par défaut le bitrate est à 1500000 pour une fibre ou 4G.

ROTATE : Définir l'angle de rotation de la caméra. METTRE 180 si le connecteur de votre nappe est en haut.

BRIGHTNESS : Définir la luminosité.

CONTRAST : Définir le contraste.

BRIGHTNESSBOOST : Définir la luminosité en mode BOOST.

CONTRASTBOOST : Définit le contraste en mode BOOST.

  • OUTPUT :

NAME : Champs que vous pouvez remplir comme bon vous semble, ne sera pas affiché, c'est uniquement pour que vous vous rappeliez de quel outputs il s'agit.

TYPE : Champs pour indiquer quel type de matériel on va piloter : Vous ne pouvez mettre que des type pré défini qui sont les suivants :

=> Gpios : Pour tout ce qui est tout ou rien, 1 ou 0, On ou Off . Pilotage de Relais, de transistor , de leds ... => Servos : Pour tout ce qui se commande avec les même signal que les servomoteurs ( servomoteur, drivers de moteur ou tout autre périphériques utilisant le même genre de signal qu'un servomoteur classique ) => Pwms : Pour piloter la luminositer d'une led ou bien la vitesse d'un moteur piloter par un transistor . ( Ne pas utiliser Pwms avec un Relais! )

Il existe aussi des type un peu plus spécialisé pour les drivers de moteurs: =>PwmPwm : Driver de moteur avec deux fils par moteurs du genre du L9110 nécessitant deux pwm pour définir la vitesse et le sens de rotation d'un moteur =>PwmDir : Driver de moteur nécessitant deux fils par moteurs du genre du MD10C cytron nécessitant un pin Pwm pour la vitesse et un pin Dir pour choisir le sens. =>PwmDirDir : Driver de moteur nécessitant trois fils par moteurs du genre du L298 avec un pin PWM ( enable ) et deux pins de direction ( In)


ADRESSE : par défaut valeur à laisser à -1 utile que si vous souhaiter piloter un élément non pas avec les GPIO de la pi mais en passant par les GPIO sur Un PCA. Dans ce cas précis remplacer -1 par le numéro de votre pca. 0 si vous n'avez qu'un seul PCA, 0 ou 1 si vous avez deux PCA etc ...


GPIOS : Contient les GPIOS auxquels seront connecté vos périphérique. Nombre compris entre 0 et 27 pour les gpio de la pi et entre 0 et 15 pour un pca. Les type Gpios, Servos, Pwms, peuvent avoir plusieurs gpio si vous voulez " dupliquer un même signal " sur plusieurs GPIO, et à minima 1 gpio de défini. Attention : les types spécifique PwmPwm et PwmDir, doivent absolument avoir deux GPIOS de spécifié, et le type PwmDirDir doit absolument avoir trois Gpios de spécifié. Pour les type PwmDir et PwmDirDir, le premier gpio est le pwm. Attention bis : évitez d'utiliser des Gpios qui sont déjà utilisé par un autre Output. La présence de conflits peut provoquer des comportement erratique ne fonctionnant pas du tout comme souhaité.

SLEEPMODES : Défini dans quels états sont mis vos pins quand le robot est en mode sommeil. Vous devez avoir autant de sleepmode que de GPIO. 4 valeurs de sleepmode possible : None High Low ou Floating. None = On ne change pas l'état du Gpio quand le robot passe en mode sommeil , le gpio reste dans l'état dans lequel il était. High Low ou floating = Le gpio sera à dans l'état spécifié lorsque le robot est en mode sommeil


INS : défini la plage d'entrée qui va commander votre système. Généralement à faire matcher avec les paramètres défini dans votre télécommande. Généralement les ins sont défini entre -180 et 180 pour les servo ( commande en degré ) et -100 à 100 pour les moteurs ( commande de pourcentage de vitesse ) mais peut être paramétrer différemment pour d'autres unités si souhaité . Attention, toujours respecter l'ordre croissant lorsque vous spécifiez vos "ins". Il doit toujours y avoir à minima 2 Ins de paramétré mais vous pouvez en mettre plus en respectant toujours l'ordre croissant. OUTS : défini la plage de valeur de sortie que va piloter votre système.

Pour le type Servos la plage des valeurs des OUTS est entre 500 ( µs ) et 2500 (µs ) Pour le type Gpios la plage des valeurs est 0 ou 1. ( traduit High ou Low ) Pour les autre types la plage de valeur est -100 à 100. ( pourcentage de pwm -100% à 100% , le signe servant pour les pins de direction ) Attention, Il doit absolument y avoir autant de OUTS que de INS ! Les tableaux INS OUTS servant à definir le comportement de sortie de votre périphérique en fonction de l'entré qu'il reçoit.

if ( INS[X] <= in && in <= INS[X+1] ) out = map (in, INS[X], INS[X+1], OUTS[X], OUTS[X+1] )


La configuration des INS et des Outs vous permet de faire des courbes de comportements de l'entré par rapport à la sortie " linéaire par morceaux ".

Vous pouvez par exemple pré calculer une approximation du comportement " au carré " avec la config suivante :

INS : -10 -7 -4 -2 0 2 4 7 10

OUTS: -100 -49 -16 -4 0 4 16 49 100


BACKSLASH : Valeur de rattrapage de jeu, utile uniquement pour corriger des servomoteurs ayant du jeu.

Pour finir :

COMMANDS16 GAINS16


COMMANDS8 GAINS8


COMMANDS1 GAINS1

Cette triplette de paire, permet de définir quelles sont les commandes ( parmi les commandes définie dans votre télécommande) qui vont avoir un impacte sur votre périphérique avec quels gains. in = Somme ( Commandes16[i] * Gains16[i] ) + Somme ( Commandes8[j] * Gains8[j] ) + Somme ( Commandes1[k] * Gains1[k] )

Attention :Toujours mettre un numéro de commandes qui existe dans votre télécommande. Pour le moment il y n'y a que 8 commandes1 N° 0 à 7 et 3 commandes 8 disponible n° 0 à 2 ( Vitesse en x = translation gauche droite , vitesse en y ) avance recule, et vitesse en z = rotation gauche droite ) Le nombre de commandes16 est paramétrables dans votre télécommandes.


C'est grâce à cette triplette de paire de configuration que vous pouvez mixer plusieurs commandes ensemble pour piloter un actionneur. C'est très utile pour le contrôle des moteurs de propulsions d'un robot par exemple, et permet de configurer aussi bien un déplacement différentiel en jouant avec les commandes8 1 et 2 que de configurer la commande de robots omnidirectionnel du type mecanum, omniwheel et même drone volant

Cas d'application

Exemple concret : Si j'ai un robot qui utilise un driver de moteurs de type L298 pour se déplacer (au lieu d'un driver de moteur qui se pilote comme un servomoteur, ce qui est configuré par défaut )

A ) Je regarde quelles sont les Outputs qui sont actuellement configuré dans la configuration effective, et je repère les OUTPUTS[4] et OUTPUTS[5] dont les noms sont "Left wheels" et "Right wheels". Ce sont donc uniquement ces deux outputs que nous allons modifier.

B ) Je choisis le type correspondant ( L298 => PwmDirDir )

C ) J'ajoute deux gpios dans la table GPIOS pour avoir les 3 gpio requis pour le type PwmDirDir , et je choisis les GPIOS parmis les gpios disponibles : pour une config standard les Gpio disponible sont 0 , 1, 4 9 10 11 12 13 24 25 26 27. ( 26 et 27 sont utilisé pour les moteurs mais vous êtes en train de travailler sur les moteurs , donc ces deux Gpios sont aussi disponible ... ) Rappel : 2 et 3 sont utilisé par l'I2C, 14 et 15 sont pour l'UART 16 à 23 sont les 8 Gpio des interrupteurs, 5 à 8 sont utilisé pour la tête et la pince ) (Note :Pour ajouter des paramètre choisir le mode d'édition texte code ou encore le mode tree. )

D ) J'ajoute 2 sleepmode pour avoir autant de sleepmode que de gpios. Pour un driver de moteur mettre tous les sleepMode à Low est une bonne idée. ( Surtout ne pas mettre le PWM en sleepmode à High un de pins de direction à High et l'autre à Low sinon votre robot va se mettre à se déplacer en veille ! )

E ) Je modifie les valeurs de outs pour correspondre à la plage de -100 à 100 du mode PwmDirDir et je met autant de outs que de in. Par default 4 ins sont configuré : -100 -1 1 100, c'est pour cela que j'ai 4 outs En générale les deux extrémités des outs vous pourrez les mettre à -100 et à 100 pour aller à la vitesse max. Et les deux valeurs centrales sont à régler pour que votre robot avance dès que vous envoyez une petite impulsion pour avancer. Exemple de outs valable : -100 -10 10 100 mais -100 -1 1 100 est valable aussi, ça dépend de votre robot. Si mon robot ne roule pas bien droit je peux ajuster les outs du moteur qui va trop vite pour corriger le défaut observer en réduisant la vitesse max par exemple..

Ce que ça donne comme configuration modifiée :

ConfHardJojo.jpg
ConfHardJojo2.jpg

Merci a Mike118 de https://www.robot-maker.com/ d'avoir écrit la section "OUTPUT"


  • SERIALPORTS : Correspond a l'adresse du port série de la Raspberry Pi.
  • SERIALRATES : Correspond au Bauds des "SERIALPORTS".
  • ENABLEGPS : -1 = désactivé 0 = port physique de la PI (port série) 1 = port logiciel pour OpenCV.
  • PWMFREQUENCY : Régler la fréquence PWM.