Animation

Discutions générales sur le DSPiy et tout ce qui s'y rattache
Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3771
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: Animation

Messagepar thierryvalk » jeu. 6 juin 2024 11:46

Coté programmation des animations.
J’aurais deux types de fichiers textes.

Fichier Séquence contenant ces différentes commandes :
On XX YY …. Pour activer des électrovannes.
Off XX YY … Pour désactiver des électrovannes.
P XX Pause en millisecondes
Voix .mp3 Fichier audio contenant la voix.
Yeux X Y PU PD Commande des yeux avec position en X et Y et l’ouverture des paupières supérieures et inférieures.
Son .mp3 Fichier audio pour l’ambiance.
WL XX preset pour l’éclairage géré par WLED

On et Off vont générer une trame en Modbus.
Voix Charger un fichier mp3 sur la SD card et le mettre en sortie. L’électrovanne pour la bouche est elle automatiquement activée par le contenu audio.
Yeux transmis via un String à la carte ESP gérant les yeux. X et Y = 0, alors mouvement aléatoire des yeux.
Son envoyé en MQTT sur le topic de carte ESP32 gérant le son d’ambiance.
WL envoyé en MQTT sur le topic de la carte ESP32 gérant l’éclairage via WLED.

Fichier Animation qui sera une suite de Séquences.

Ces fichiers sont stockés sur la SD Card et peuvent être appelés de différentes manières.

Séquence via un ficher Animation, ou via le topic MQTT sequence ce qui permet une gestion via PC ou Smartphone.

Animation, selon présence ou pas de personnes, du nombre de personnes, de l’heure …. Mais aussi via le topic MQTT animation.

Et pour la mise au point, toutes les commande ont leur propre topic MQTT pour une commande directe via mon PC.
Cela permet la création des fichiers Séquences qui seront téléchargés sur la SD Card via l’interface Web de l’ESP32.

J’aurais donc une page Web pour charger les fichiers Séquences, Animations et Voix.
Une seconde page Web pour charger les fichiers sons d’ambiance.
Une troisième page Web avec l’interface WLED pour créer les presets LED.
Et enfin mon application dédiée sur PC en C#.

Il y a certainement moyen de faire plus simple au niveau de la gestion, mais c’est plus compliqué. :mrgreen:
Puis ce n'est que l'idée a ce jour et c'est pas fini.

GoodNoize
Messages : 863
Enregistré le : mar. 27 nov. 2018 17:18
Localisation : Jura

Re: Animation

Messagepar GoodNoize » jeu. 6 juin 2024 12:11

et beh il y a du boulot !
je trouve ça dingue ce qu'on faire avec ces petites carte.

Pour tes schémas, organigrammes, je te conseil vivement l'outil web : www.draw.io
C'est vraiment top. On a des box, et on peux créer des liaisons entre ces box.
En quelques clics on à un truc qui à de la gueule.

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3771
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: Animation

Messagepar thierryvalk » jeu. 6 juin 2024 14:07

Merci pour le lien.

Oui, c'est dingue, facile et très rapide à mettre en œuvre sous Arduino avec la quantité de libs qui existent.
C'est pas du Pro, mais bien suffisant pour nos applications.

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3771
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: Animation

Messagepar thierryvalk » jeu. 6 juin 2024 21:10

Ce soir, gestion des yeux:
Sur l'appli de mon PC, je rentre des lignes de commandes simplement via des lignes de texte.
Pas vraiment clair, mais la suite de chiffre pour YEUX est : Position Y, Position X, Paupière Haut, Paupière basse, Iris, couleur.
Après les // ce sont des commentaires sans la moindre action.
P correspond à une pause en millisecondes.

C'est basique, on peut faire mieux, mais c'est efficace et simple.

Ce qui est marrant c'est le chemin effectué.
L'appli en C# lit une ligne, si commence par "YEUX" envoi son contenu en MQTT vers le Broker local.
On part du PC en Ethernet, le routeur va transmettre en Wifi le message à destination du Brocker via TC/IP sur un Topic donné.
Le broker ne fait pas grand chose, il regarde juste si quelqu'un a souscrit à ce Topic.
Et c'est la cas avec l'ESP32 "sorcière".
Le broker va donc lui retransmettre ce message en Wifi via le routeur en TC/IP.
L'ESP32 "sorcière" va être notifié de la réception de ce message, le lire et voir qu'il commence par "YEUX".
Il ne lui est pas directement destiné et va alors le transmettre via son RS232 à l'ESP32 "yeux".
Ce dernier n'ayant qu'a effectuer les commandes contenues dans ce message pour gérer les deux écrans.

Cela peut paraitre lourd et compliqué, mais en fait non,cela permet une grande souplesse d'ensemble.

Voici un exemple de séquence juste pour test:
test yeux.PNG


Et la petite vidéo (de très mauvaise qualité) de cette séquence :


T'as pas compris ? :diable:
sorcière.JPG

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 3098
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: Animation

Messagepar alka » ven. 7 juin 2024 11:38

très réussi. les enfants vont crier !

l'étape d'après c'est de faire un boitier de commande (wifi) avec un joystick et quelques boutons https://arduinofactory.fr/joystick-arduino/
Image

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3771
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: Animation

Messagepar thierryvalk » ven. 7 juin 2024 11:50

L'étape d'après c'est surtout gérer ceci :
les enfants vont crier !

Détecter des cris, les localiser et inter-agir.
Mais c'est pas simple surtout dans un environnement relativement bruyant. Mais peut-être pour 2025, j'y regarde.
Le gros problème de ce genre de projet est qu'il n'y a pas de limite.

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 3098
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: Animation

Messagepar alka » ven. 7 juin 2024 13:52

tu as vu que Rpi vient d'annoncer HAILO un Hat avec NPU pour l'IA et des choses comme reconaissance d'image etc. Ca peut aider.
https://hailo.ai/company-overview/newsr ... erry-pi-5/

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3771
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: Animation

Messagepar thierryvalk » lun. 10 juin 2024 11:57

Intéressant, je n'étais pas au courant.

Actuellement, j'utilise la solution Google Coral avec un accélérateur en USB.
Fonctionne correctement sauf si l'on veut appliquer différents traitements. Le temps de chargement des modèles via l'USB est bien trop lent.
On peut rajouter un second accélérateur mais là ça devient un peu une usine à gaz.

J'ai testé une solution Nvidia, pas simple puis le prix si l'on veut une bonne solution devient élevé.

Coral existe aussi en PCIe et semble depuis peu pouvoir s'utiliser sur un RPi5.
C'est aussi tentant de tester, mais Google ne semble pas très dynamique sur ces projets.

Mon plus gros problème est que je maitrise très mal le Rpi Linux, Pyton .... c'est franchement pas mon truc.

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3771
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: Animation

Messagepar thierryvalk » ven. 14 juin 2024 12:05

Premiers tests avec un RPI5 et l'accélérateur Hailo 8L.

C'est simple a installer, niveau hardware juste ne pas oublier que les connecteurs pour la caméra sont différents du RPI4. X(
J'ai testé l'exemple de Pose_estimation.
Très rapide et hyper efficace, voire même trop rapide.

Par contre niveau soft, pour y comprendre quelque chose question de faire sa propre appli c'est vraiment usine à gaz contrairement à la solution Google Tensorflow-Lite qui fonctionne avec quelques lignes de code.

Faudra sans doute un peu patienter vu que Hailo sur RPI c'est tout neuf.
Pour conclure Hailo sur RPI trop récent et Tensorflow-Lite avec Coral sur RPI trop ancien et manque de mises à jours.

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 3098
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: Animation

Messagepar alka » ven. 14 juin 2024 14:15

tu as été rapide ! j'imagine que l'expérience va s'améliorer dans les mois qui viennent avec le nombre d'utilisateurs

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3771
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: Animation

Messagepar thierryvalk » ven. 14 juin 2024 14:45

Certainement, mais le RPI5 sans accélérateur semble déjà donner satisfaction dans de nombreux cas.

Je vais donc tester YoloV8 qui est utilisé par Halio.
https://docs.ultralytics.com/fr

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3771
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: Animation

Messagepar thierryvalk » sam. 15 juin 2024 17:08

Après beaucoup d'essais, j'ai suivi ce tuto au final très simple sans accélérateur matériel.
https://github.com/StefansAI/Yolov8_Rpi5_CoralUSB/tree/main

Le temps d'inférence était d'environ 600ms par image.

Après conversion au format NCNN via cette ligne :

Code : Tout sélectionner

# Export a YOLOv8n PyTorch model to NCNN format
yolo export model=yolov8n.pt format=ncnn  # creates 'yolov8n_ncnn_model'   


On arrive à 300ms par image ce qui fait 3 images par seconde, suffisant pour mon application surtout que c'est avec Preview.

Le code tout simple :

Code : Tout sélectionner

import cv2
from picamera2 import Picamera2

from ultralytics import YOLO

# Initialize the Picamera2
picam2 = Picamera2()
picam2.preview_configuration.main.size = (1280, 720)
picam2.preview_configuration.main.format = "RGB888"
picam2.preview_configuration.align()
picam2.configure("preview")
picam2.start()

# Load the YOLOv8 model
# model = YOLO("yolov8n.pt")
# model = YOLO("yolov8n-pose.pt")
model = YOLO('/home/thierry/yolov8n-pose_ncnn_model')

while True:
    # Capture frame-by-frame
    frame = picam2.capture_array()

    # Run YOLOv8 inference on the frame
    results = model(frame)

    # Visualize the results on the frame
    annotated_frame = results[0].plot()

    # Display the resulting frame
    cv2.imshow("Camera", annotated_frame)

    # Break the loop if 'q' is pressed
    if cv2.waitKey(1) == ord("q"):
        break

# Release resources and close windows
cv2.destroyAllWindows()


Et le résultat avec une lumière bien pourrie :
pose.JPG


Je testerais tout de même avec l'accélérateur Coral et vu que le RPI5 permet 2 caméras voir ce que cela donne avec 2 caméras.

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3771
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: Animation

Messagepar thierryvalk » ven. 5 juil. 2024 14:09

J’ai refait le graphique général. :)
sorciere.drawio(2).png


Au centre, le broker MQtt et ses Topics :
Un broker MQtt ce n’est qu’un serveur de messages.
N’importe qui peut Publier des messages sur un Topic et n’importe qui peut s’abonner à un Topic.
Le principe est tout simple, si je suis abonné à un Topic je reçois en direct les messages qui y sont publiés.

En bas à gauche ESP32 WLED :
C’est le plus simple du projet vu que tout fait. Il s’agit de l’application WLED installée et configurée sur un ESP32.
https://kno.wled.ge/
Il va permettre la gestion de l’éclairage en LED RGB via un protocole série.
On crée des Presets via sa page WEB qui pourront être appelés par le système en MQtt qu’il a déjà d’implanté.

En haut à gauche ESP32 Ambiance :
C’est un ESP avec DAC et ampli audio + SD card contenant des sons et musiques d’ambiance question de créer l’atmosphère sonore.
Pour charger les fichiers audios, il a également sa page Web avec une fonction Upload.
Il va également servir d’interface avec un Radar de détection de présence humaine.
Pour le moment, c’est le HLK-LD2410C qui donne comme info la présence d’un humain en mouvement ou fixe avec sa distance.
Il devrait être remplacé par un HLK-2450 qui permet de détecter plusieurs personnes et donner en plus l’angle des personnes par rapport au radar.
Vu que l’on détecte une ou plusieurs personnes, on va regarder.

En haut à droite RPI V5 Vision :
Je suis occupé à terminer cette partie pas forcément simple.
Au final, j’ai laissé tomber Coral, le RPI5 sans accélérateur fonctionne déjà bien.
Une première camera va voir comme verrait la sorcière.
Elle va détecter les personnes et simuler leurs squelettes simplifiés.
Cela devrait là aussi donner une estimation de la distance et surtout la taille de la personne.
Le but étant de déterminer si c’est un enfant ou adulte. Mais pas évident d’avoir les pieds et la tête sur une même image si la personne est proche.
Mais le système a appris à reconnaitre le genre d’un visage, s’il s’agit d’un enfant, adulte ou senior.
En espérant qu’il ne se trompe pas.
Pour cela, on lui passe pour chaque personne détectée précédemment une image du visage.
Et dans les apprentissages, il a également appris à reconnaitre une personne prenant une photo ou vidéo à l’aide d’un smartphone.
Le résultat de ce qu’il a vu sera publier sur le topic vision.
Ma plus grosse crainte est d’avoir des problèmes de lumière pour les visages, pas forcément simple en extérieur.

La seconde camera n’est pas encore implantée, son but serait de regarder la sorcière de profil et voir si on lui tend la main.

ESP32 Tête :
Lui aussi équipé d’un DAC+ampli+ petit HP pour retransmettre la voix qui sera aussi enregistrée sous forme de fichiers audio.
Il commande via un ULN2803 l’électrovanne qui commande la mâchoire pour être +- synchro avec la voix.
Et via un réseau Modbus va commande jusqu’a 48 électrovannes pour les autres muscles.

Reste L’ESP32 Yeux :
Entorse au principe général, n’est pas en MQtt mais reçoit ses messages via UART de l’ESP32 tête
Il a déjà beaucoup à faire vu qu’il gère 2 écrans de 240*240 pixels puis j’avais commencé comme çà et ça fonctionne très bien.

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3771
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: Animation

Messagepar thierryvalk » mer. 31 juil. 2024 20:40

Un peu de construction et menuiserie aussi dans ce projet. :)
cabanne.JPG

Réalisé uniquement avec des restes, je pense habiller l'ensemble avec de la canisse de roseau ou quelque chose du genre.
Le but est d'avoir une certaine protection à la pluie sans avoir trop de prise aux vents.
Demain, motorisation des portes et ensuite quelques tests en position avec la caméra et le radar.

GoodNoize
Messages : 863
Enregistré le : mar. 27 nov. 2018 17:18
Localisation : Jura

Re: Animation

Messagepar GoodNoize » jeu. 1 août 2024 08:00

Impeccable le petit abri :super:

C'est ta façade derrière en ardoise ? propre

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3771
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: Animation

Messagepar thierryvalk » ven. 9 août 2024 21:16

Derrière, c'est la façade des voisins, malgré la couleur permet des projections d'images correctes.

La cabane habillée:
cab fermee.jpg


Ouverture par deux vérins, eux aussi via ESP32 + L298N en MQtt ce qui me permet des les commander avec un smartphone via une appli MQtt.
cab ouverte.jpg
La cabane me fait un bel petit atelier/bureau de jardin. :frime:

Et le début de l'éclairage en LED RGB via un ESP32 + WLED, là aussi simplement commandé pour le moment via un smartphone.
cab nuit.jpg

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3771
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: Animation

Messagepar thierryvalk » dim. 11 août 2024 17:16

Rpi avec sa camera installés, il y a du son, bref il ne manque plus que la sorcière mais quelques petits détails à résoudre :

Le 5V du Rpi est trop faible pourtant la SMPS est à 5.3V et j'ai utilisé du 4².

J'ai installé de l’Ethernet pour le RPI et un point d'accès Wifi direct dans la cabane.
Pour ce dernier j'ai le même SSID que le point d'accès de la maison et activé une option de roaming .
Tout va bien avec les ESP32 et mon Smartphone Android, par contre mon PC Win10 ne veut pas de ce point d'accès tout en n’affichant aucune erreur. Je pense à une sécurité basée sur la MAC.

rpi cam.JPG

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3771
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: Animation

Messagepar thierryvalk » mar. 24 sept. 2024 19:27

L'automne est bien là et bientôt, déjà, octobre. :ghee:

Petit rajout décoratif, des bougies à LED.
Commandée sur Amazon, elles sont commandables via une telco IR et fonctionnent avec deux piles AA.
L'effet de flamme est pas mal et le réalisme aussi.

Évidemment il faut rajouter cela dans la gestion de l'ensemble.

L'ESP32 sous Arduino avec ses Lib est bien pratique et tout a fait adapté pour ce genre d'application vraiment simple à implanter.

Un petit ESP32, un capteur IR telco comme celui du DSPiy, la lib IRremoteESP8266.h par exemple et quelques lignes de code permettent de décoder les différents code IR (qui sont du NEC) de la telco livrée avec les bougies.
On copie ces codes puis l'on rajoute un petit transistor avec 2 LED IR, on passe en IR Send et l'on a remplacé la telco d'origine par notre ESP32.

Dans mon cas, j'ai juste rajouté la Lib MQtt et encore quelques lignes de code et maintenant je commande mes bougies via mon Smartphone avec une Appli MQtt. :gene:
bougie.jpg
bougieir.jpg


Retourner vers « DSPiy général »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 8 invités