cctweaked_drone/README.md
2026-07-17 18:07:54 +02:00

7.7 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

  1. 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.
  2. Premier lancement: drone cree drone.conf. RELIRE chaque parametre (Y_VOL, Y_MINI, ANGLE_MAX, DIST_SOL, offsets, joystick, moteur...) puis passer verifie = true. Un warning s'affiche tant que ce n'est pas fait.
  3. 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 (mode INACTIF, drone pose): impulsion sur chaque RSC inconnu; 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.
    • 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 0
  • inactif : 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 devrait
  • calibrage : identique a inactif mais AUTORISE les calibrations au sol (gimbal, joystick, typew, rsc); capteurs et pid se lancent en mode vol
  • stationnement : 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 vers vol si 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 0
  • atterrissage : 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 ocean
  • auto : 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.