readme
This commit is contained in:
@@ -45,11 +45,10 @@ d'analyse distantes.
|
|||||||
| Plateforme | Raspberry Pi 4 — Debian Linux |
|
| Plateforme | Raspberry Pi 4 — Debian Linux |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Fonctionnalités
|
## Fonctionnalités
|
||||||
|
|
||||||
- Pilotage du bras CNC en GRBL — déplacement automatique puits par puits
|
- Pilotage du bras CNC en GRBL — déplacement automatique puits par puits
|
||||||
- calibration des multi-puits avec synchro base de données
|
- Calibration des multi-puits avec synchro base de données
|
||||||
- Acquisition image haute définition via ArduCam (OpenCV + Picamera2)
|
- Acquisition image haute définition via ArduCam (OpenCV + Picamera2)
|
||||||
- Stockage des frames en base time série ReductStore
|
- Stockage des frames en base time série ReductStore
|
||||||
- Sessions de scan paramétrables (grille complète ou sélection de puits)
|
- Sessions de scan paramétrables (grille complète ou sélection de puits)
|
||||||
@@ -62,29 +61,28 @@ d'analyse distantes.
|
|||||||
- Interface administration Django (sqlite3 ou mariadb ou postgresql)
|
- Interface administration Django (sqlite3 ou mariadb ou postgresql)
|
||||||
- Suivi de progression des tâches longues par polling
|
- Suivi de progression des tâches longues par polling
|
||||||
|
|
||||||
## Planaire simulation de mouvement aléatoire
|
Supporte plusieurs planaires avec paramètres configurables via django ou csv.
|
||||||
|
|
||||||
Supporte plusieurs planaires avec paramètres configurables via arguments CLI.
|
|
||||||
Export CSV par planaire compatible EthoVision XT.
|
Export CSV par planaire compatible EthoVision XT.
|
||||||
|
|
||||||
Seuils EthoVision par défaut (configurables en arguments) :
|
### Seuils EthoVision par défaut (configurables via django ou csv)
|
||||||
|
|
||||||
- Immobile : déplacement < 0.2 mm/s
|
- **Immobile** : déplacement < 0.2 mm/s
|
||||||
- Mobile : 0.2 à 1.5 mm/s
|
- **Mobile** : 0.2 à 1.5 mm/s
|
||||||
- Très mobile : > 1.5 mm/s
|
- **Très mobile** : > 1.5 mm/s
|
||||||
|
|
||||||
- EthoVision CSV frames CSV summary
|
| EthoVision | CSV frames | CSV summary |
|
||||||
- ========== ========== ===========
|
|---|---|---|
|
||||||
- movedCenter-pointTotalmm total_distance_mm movedCenter_pointTotal_mm
|
| movedCenter-pointTotalmm | total_distance_mm | movedCenter_pointTotal_mm |
|
||||||
- VelocityCenter-pointMeanmm/s velocity_mm_s velocity_mean_mm_s
|
| VelocityCenter-pointMeanmm/s | velocity_mm_s | velocity_mean_mm_s |
|
||||||
- MovementMoving moving, duration_moving_s movement_moving_duration_s
|
| MovementMoving | moving, duration_moving_s | movement_moving_duration_s |
|
||||||
- MovementNot Moving duration_stopped_s movement_not_moving_duration_s
|
| MovementNot Moving | duration_stopped_s | movement_not_moving_duration_s |
|
||||||
- ImmobileFrequency / Duration mobility_state mobility_immobile_frequency/duration_s
|
| ImmobileFrequency / Duration | mobility_state | mobility_immobile_frequency/duration_s |
|
||||||
- MobileFrequency / Duration mobility_state mobility_mobile_frequency/duration_s
|
| MobileFrequency / Duration | mobility_state | mobility_mobile_frequency/duration_s |
|
||||||
- Highly mobileFrequency / Duration mobility_state mobility_highly_mobile_frequency/duration_s
|
| Highly mobileFrequency / Duration | mobility_state | mobility_highly_mobile_frequency/duration_s |
|
||||||
|
|
||||||
|
### Métriques calculées
|
||||||
|
|
||||||
Métriques calculées :
|
|
||||||
- Distance totale parcourue (mm) → movedCenter-pointTotalmm
|
- Distance totale parcourue (mm) → movedCenter-pointTotalmm
|
||||||
- Vitesse instantanée (mm/s) → VelocityCenter-pointMeanmm/s
|
- Vitesse instantanée (mm/s) → VelocityCenter-pointMeanmm/s
|
||||||
- Durée cumulée en mouvement (s) → MovementMoving
|
- Durée cumulée en mouvement (s) → MovementMoving
|
||||||
@@ -92,11 +90,14 @@ Métriques calculées :
|
|||||||
- Fréquence et durée par état de mobilité → Mobility state (EthoVision)
|
- Fréquence et durée par état de mobilité → Mobility state (EthoVision)
|
||||||
- Distance à la paroi (mm) → thigmotactisme
|
- Distance à la paroi (mm) → thigmotactisme
|
||||||
|
|
||||||
Comportements simulés :
|
### Comportements
|
||||||
- Thigmotactisme : attraction vers la paroi (--thigmotaxis)
|
|
||||||
- Phototactisme : fuite de la lumière (--photo-mode, --photo-strength)
|
- **Thigmotactisme** : attraction vers la paroi (--thigmotaxis)
|
||||||
- Chimiotactisme : attraction vers une source de nourriture (--chemo-strength)
|
- **Phototactisme** : fuite de la lumière (--photo-mode, --photo-strength)
|
||||||
- Inter-individus : évitement de contact, agrégation, répulsion chimique
|
- **Chimiotactisme** : attraction vers une source de nourriture (--chemo-strength)
|
||||||
|
- **Inter-individus** : évitement de contact, agrégation, répulsion chimique
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Architecture
|
## Architecture
|
||||||
|
|||||||
@@ -196,6 +196,9 @@ def on_exports_done(results: list, session_id: str):
|
|||||||
|
|
||||||
@shared_task
|
@shared_task
|
||||||
def scanning(session_id: str):
|
def scanning(session_id: str):
|
||||||
|
"""
|
||||||
|
Scanning différé.
|
||||||
|
"""
|
||||||
try:
|
try:
|
||||||
scanner = task_manager.scanner
|
scanner = task_manager.scanner
|
||||||
scanner.cam.set_median(is_median=False)
|
scanner.cam.set_median(is_median=False)
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="w3-row w3-black">
|
<div class="w3-row w3-black">
|
||||||
<div class="w3-col w3-center" style="width:20%">
|
<div class="w3-col w3-center" style="width:25%">
|
||||||
<div class="w3-row w3-row-padding">
|
<div class="w3-row w3-row-padding">
|
||||||
<div class="w3-col w3-margin-bottom">
|
<div class="w3-col w3-margin-bottom">
|
||||||
{% trans 'Position multi-puit' %}<br>
|
{% trans 'Position multi-puit' %}<br>
|
||||||
@@ -109,10 +109,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="w3-col" style="width: 60%">
|
<div class="w3-col" style="width: 50%">
|
||||||
{% include 'scanner/scan-image.html' %}
|
{% include 'scanner/scan-image.html' %}
|
||||||
</div>
|
</div>
|
||||||
<div class="w3-col w3-center" style="width: 20%">
|
<div class="w3-col w3-center" style="width: 25%">
|
||||||
<div class="w3-row w3-row-padding">
|
<div class="w3-row w3-row-padding">
|
||||||
<div class="w3-col">
|
<div class="w3-col">
|
||||||
<div class="w3-right-align w3-small"><span id="_ts"></span></div>
|
<div class="w3-right-align w3-small"><span id="_ts"></span></div>
|
||||||
|
|||||||
@@ -30,8 +30,8 @@
|
|||||||
{% block content %}
|
{% block content %}
|
||||||
<div id="replay-grid" class="w3-black">
|
<div id="replay-grid" class="w3-black">
|
||||||
{% if image %}
|
{% if image %}
|
||||||
<div class="w3-card-4 w3-border" style="min-width: 640px">
|
<div class="w3-card-4 w3-border">
|
||||||
<img id="_replay_img" src="{{ image }}" style="width: 100%">
|
<img id="_replay_img" src="{{ image }}" style="max-width: 800px;">
|
||||||
<div class="w3-bar w3-padding-small w3-light-grey">
|
<div class="w3-bar w3-padding-small w3-light-grey">
|
||||||
<span class="w3-bar-item w3-marging-right w3-dark-xlight" >{{ uuid }}</span>
|
<span class="w3-bar-item w3-marging-right w3-dark-xlight" >{{ uuid }}</span>
|
||||||
<button id="_replay_play" class="w3-bar-item w3-btn"><i class="fa-solid fa-play"></i></button>
|
<button id="_replay_play" class="w3-bar-item w3-btn"><i class="fa-solid fa-play"></i></button>
|
||||||
|
|||||||
Reference in New Issue
Block a user