126 lines
6.1 KiB
Markdown
126 lines
6.1 KiB
Markdown
# 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 le moniteur tactile, DANS CET ORDRE (les
|
|
modes non calibres sont verrouilles en rouge). 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).
|
|
|
|
## Modes (boutons du moniteur; 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,
|
|
pret pour les calibrations. 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
|
|
- `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` : au clavier du PC: `auto <x> <z>`. Decollage a Y_VOL,
|
|
ralliement en avancant (cap estime par GPS), atterrissage sur place
|
|
- `position` : au clavier: `position <x> <y> <z>`. Rallie le point;
|
|
la descente est bloquee si le sol est detecte
|
|
|
|
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 sont exclus de l'apprentissage.
|
|
Alerte sous SEUIL_ALERTE.
|
|
|
|
## 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.
|