8.1 KiB
Quadricoptere Create Aeronautics : controleur centralise
Nouvelle architecture: un SEUL ordinateur (PC central) pilote tout via le reseau filaire. Les anciens scripts multi-PC (helice.lua, central.lua, input.lua, console.lua, propulsion.lua) sont obsoletes.
Materiel
Directement sur le PC central:
- altitude_sensor, Create_DisplayLink (affichage de conduite)
- ender modem (uniquement pour le GPS)
- sortie redstone BOTTOM vers le moteur (15 = arret, 14 = vitesse minimale, 0 = vitesse maximale)
Via le reseau filaire (wired modems):
- 6 Create_RotationSpeedController: 4 helices + 2 propulseurs
(roles affectes par
calib rsc, persistes dans drone.etat) - 3 velocity_sensor, un par composante (axes affectes par
calib capteurs) - 1 gimbal_sensor, 1 optical_sensor (vers le sol, 15.5 = rien), 1 stressometer, 1 redstone_relay (joystick), 1 advanced monitor (tactile), 1 linked typewriter (EN ATTENTE: relever ses signatures avec test_signatures, voir lib/ihm.lua)
Installation
- Copier drone.lua sur le PC, puis:
drone maj <url_base>pour telecharger les modules depuis votre depot (Forgejo: URL "raw" du dossier). Autoriser le domaine dans la config http de CC:Tweaked. Ou copier a la main drone.lua + lib/*.lua. - Premier lancement:
dronecreedrone.conf. RELIRE chaque parametre (Y_VOL, Y_MINI, ANGLE_MAX, DIST_SOL, offsets, joystick, moteur...) puis passerverifie = true. Un warning s'affiche tant que ce n'est pas fait. - Calibrations depuis l'onglet CALIB, en mode CALIBRAGE pour
celles au sol, DANS CET ORDRE (les modes non calibres sont
verrouilles en rouge). Toutes sont RE-EXECUTABLES (recablage:
relancer la calibration remet ses affectations a zero et prend
effet sans relancer le programme). La calib rsc verifie la
coherence (retour de l'assiette a l'etat initial entre chaque
impulsion, detection des conflits deux RSC -> une meme helice)
et s'annule proprement en cas d'incoherence. Les calibrations
assistees affichent leurs consignes sur l'ecran de conduite et se
valident en touchant le moniteur:
gimbal(assistee, en premier): incliner le nez vers le bas puis pencher a gauche; associe les 2 angles bruts au tangage et au roulis (l'association CHANGE d'un vaisseau a l'autre).joystick(assistee): pousser a fond dans chaque direction pour identifier les faces du redstone relay.typew(assistee, OPTIONNELLE): le typewriter emet des codes ASCII (qwerty), le mappage est integre par defaut (0..9, Entree = valider, Backspace = effacer, + / - = consigne +-1). Ne calibrer que si le clavier a un mappage exotique.rsc(drone pose): impulsion sur chaque RSC; l'effet d'assiette designe le coin; sans effet = propulseur. prop_l / prop_r arbitraires: si un virage gauche part a droite, les echanger dans drone.etat. Pour un DRONE TROP LOURD (impulsions sans effet), utiliserrscman.rscman(drone pose, manuelle): chaque RSC tourne a CALIB.RPM_MANUEL (10 rpm); regarder quelle helice tourne et toucher sa position sur l'art (4 coins + prop_l / prop_r); unicite garantie, ANNULER restaure l'etat precedent. Fiabilise aussi prop_l / prop_r (plus d'affectation arbitraire).capteurs(en vol): montee, avancee puis translation gauche identifient l'axe ET la direction de chaque velocity sensor (repere du drone: avant / lateral / vertical, positif = avant / gauche / haut).pid(en vol stationnaire, marge d'altitude): recherche iterative, critere ZERO depassement + temps de reponse minimal + assiette <= ANGLE_MAX. EXPERIMENTAL. Toute modification des parametres de conf dont dependent ces gains (VITESSE_RSC_MAX, VITESSE_RAMPE, ANGLE_MAX) INVALIDE la calibration au prochain demarrage (retour aux gains de la conf + alerte).
Interface (moniteur tactile)
Echelle de texte automatique (la plus grande qui loge le contenu). Navigation par onglets:
- MODE : boutons de modes + contenu adapte au mode courant (voir ci-dessous), art du quadricoptere (cercles des helices: blanc rpm=0, rouge rpm max, jaune en changement, vert stable; rpm des propulseurs sur les cotes)
- CALIB : boutons des calibrations (gris = a faire, jaune = en cours, vert = faite), consignes et barre de progression, art avec le RSC en cours en VIOLET
- JOURNAL : dernieres lignes du journal de vol
Modes (verrouilles en rouge si une calibration manque, la raison
s'affiche au toucher)
off: moteur coupe (bottom a 15), tous les RSC a 0inactif: moteur ALLUME, tous les RSC a 0, commandes desactivees. Dans tous les modes sauf off, une erreur s'affiche si le moteur ne tourne pas (stressometer a capacite nulle) alors qu'il le devraitcalibrage: identique a inactif mais AUTORISE les calibrations au sol (gimbal, joystick, typew, rsc); capteurs et pid se lancent en mode volstationnement: helices a pleine puissance inversee (plaquage), propulseurs a 0, commandes desactivees. Conditions d'entree: au sol (optical <= DIST_SOL) ET horizontal (<= ANGLE_MAX). Sortie automatique versvolsi les conditions sont perdues.vol: assiette maintenue horizontale (PID tangage/roulis a 0), altitude au PID double regime, deplacement horizontal au joystick via les PROPULSEURS (avance/virage differentiels)drone: le joystick commande l'INCLINAISON (jusqu'a ANGLE_DRONE_MAX), deplacement par les helices, propulseurs a 0atterrissage: descente douce (VITESSE_ATTERRISSAGE) jusqu'au sol, puis stationnement. Sous Y_MINI, la descente exige un sol POSABLE (optical: bloc detecte, ni eau ni lave): garde-fou oceanauto: cible a 2 coordonnees (auto <x> <z>au clavier, pave tactile, ou bouton d'un point enregistre): decollage a Y_VOL, ralliement en avancant (cap estime par GPS), atterrissage sur place. Cible a 3 coordonnees (auto <x> <y> <z>): rallie le point et s'y MAINTIENT a l'altitude y (bornee par le sol et Y_MINI). Bouton ANNULER: retour en vol stabilise a la position courante
La consigne d'altitude se regle aux boutons +-1/+-10 du moniteur ou au TYPEWRITER: taper les chiffres (la saisie s'affiche sur l'ecran de conduite) puis Entree; Backspace corrige; + et - ajustent la consigne de 1 quand aucune saisie n'est en cours.
Points nommes (clavier du PC, 10 max):
pt save <nom> | pt go <nom> | pt del <nom> | pt list | rtb
(retour au point de decollage de la derniere mission auto).
Regulation
- PID altitude: deux jeux de gains (montee / descente), derivee sur la mesure et integrale conditionnelle (concu pour le zero-depassement), consigne rampee (VITESSE_RAMPE).
- PID assiette: tangage et roulis vers leurs cibles; mixage par coin: base + corrections signees.
- Moteur asservi au stressometer: augmente si l'utilisation depasse STRESS_HAUT, diminue sous STRESS_BAS (economie). Le moteur est dimensionne pour suffire; en cas de SURCHARGE malgre le maximum, les PROPULSEURS sont reduits en priorite (facteur 0.3) + alerte, puis retablis quand le stress redescend.
- Carburant: deux valeurs sur le 2e display link: POURCENTAGE de reserve (ligne 1) et AUTONOMIE en minutes (ligne 2), estimee par apprentissage glissant (EMA, CARBURANT.LISSAGE) de la consommation; les ravitaillements et le mode off sont exclus de l'apprentissage. Alerte sous SEUIL_ALERTE.
- Moteur: pre-boost a pleine puissance (MOTEUR.BOOST secondes) a chaque passage vers un regime exigeant (ex: inactif -> stationnement) pour eviter l'overstress transitoire.
- Reactivite: le GPS (appel bloquant jusqu'a 2 s) est isole dans une tache dediee alimentant un cache; l'interface et la navigation ne bloquent jamais dessus. Messages longs de l'ecran de conduite: defilement par segments de mots entiers (indicateur i/n).
Fichiers
drone.conf: parametres utilisateur (cree si absent)drone.etat: mode, consigne, roles RSC, axes capteurs, gains calibres, point de decollage (restaures au reboot; en vol, la consigne repart de l'altitude reelle)drone.log: journal de vol (rotation a 64 Ko)
Points d'attention
- tanks(): si la capacite n'est pas fournie par le jeu, la conf CARBURANT.CAPACITE_TANK sert de repli.