Xetera.AI

a marqué ce sujet comme résolu.

Bonjour,

Comme vous le savez, je réalise mes études dans l’intelligence artificielle et plus précisément dans le machine learning.

Je viens ainsi sur le forum dans l’objectif de présenter l’idée de projet que j’ai et que j’aimerai mettre en place dans les prochaines semaines.

Etude

Pour mes études, je dois valider une preuve de concept autour d’un projet utilisant le machine learning. Mon envie serait de la faire autour de ce projet pour poser tout d’abord les bases techniques / architecture autour du projet puis de le concevoir. Je pense que ça sera aussi un bon projet porteur à mettre sur le CV donc ça ne fait pas de mal et même en cas d’échec, je risque de tirer beaucoup de ce projet

Présentation du projet et objectifs

Xetara. AI est un projet de mini robot (photo en bas de paragraphe), qui aurait comme objectif d’approfondir mes connaissances en Robotique et en Machine Learning.

Diverses fonctionnalités que j’ai déjà imaginées pourraient être mise en place et proposer un résultat concret intéressant :

  • Détection d’obstacle grâce à l’ultrason puis visualisation de l’obstacle et décision de passage ou non selon le matériel ou de déplacer le matériel qui fais l’obstacle avec le bras

  • Recevoir des instructions de manière auditive et prendre une décision en fonction de la personne qui demande (Exemple, elle n’obéira que si la personne qui lui donne l’ordre est connu)

  • Reconnaissance d’individu après avoir eu des infos sur lui (centaines d’image de la même personne)

  • Rouler en suivant des instructions (exemple : "Avance", "Recule", "Tourne à gauche", "Tourne à droite"

Cette liste va sans aucun doute évoluer dans le futur ou diminuer en fonction de la complexité. Pour l’instant j’estime les fonctions demandé de l’ordre du possible.

Xetera.AI
Xetera.AI

Matériel

Pour le projet, j’imagine avoir besoin au minima :

  • Carte arduino
  • Caméra
  • Wifi
  • Caméra
  • Détecteur par ultrason

Exemple d’un pack intéressant à acheter : https://www.amazon.fr/dp/B07V4392ZR/ref=sspa_dk_detail_3?spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUEzOVNaTFFUVTRRQkg0JmVuY3J5cHRlZElkPUEwMDA5OTQ0MVNDSkJDWDE4TVRTUyZlbmNyeXB0ZWRBZElkPUEwMDY2MzYzMlpIUlNQNTJJUzVPUCZ3aWRnZXROYW1lPXNwX2RldGFpbDImYWN0aW9uPWNsaWNrUmVkaXJlY3QmZG9Ob3RMb2dDbGljaz10cnVl&th=1

Architecture

Pour l’architecture, je pensais à faire un programme arduino toujours connecté par socket avec une API qui gère la partie machine learning et qui ne transmet que des actions à faire

Pour des raisons évidente de mémoire et de puissance de calcul

Je publierai dans les prochains jours des schéma de l’architecture que j’imagine pour le projet

Technologie

Pour le projet, le choix technologique qui me semblerait judicieux serait Python en raison du nombre de lib pour du ML disponible et aussi du fait que l’Arduino semble bien supporté (on remarque sur la page du produit que les langages Python et C sont supportés) Toutefois, je me demande si l’utilisation seule de Python serait un choix pertinent par ce qu’il faudrait quand même un peu de réactivité de la part du robot et pas attendre 30 minutes avant qu’une action soit faites… (Quid de Rust ?)

Graphique illustrant mon idée :

Schéma
Schéma

Retour et questions

Vous l’aurez compris pour l’instant, on ne parle ici que d’une idée que je dois désormais mettre en pratique.

J’attends des retours concernant les moyens de réussir à parvenir au résultat attendu même si cela risque d’être un travail long et laborieux, je suis sûr d’en tirer beaucoup de connaissances.

Merci à vous pour votre bienveillance :)

Je n’y connais pas grand-chose en AI et en Arduino, mais :

Un arduino ne peut pas faire les actions que tu cites. Il faut pour cela un PC assez puissant. Je pense que l’arduino embarqué se va communiquer avec le PC soit en Bluetooth, soit en WiFi.

Supposons que l’arduino exécute uniquement des requêtes émises par le PC. Cela veut dire que l’IA contrôle totalement le robot, qui ne prend pas de décisions. Par exemple, l’IA lui demande d’avancer de 10 unités, puis lui demande de transmettre une image .

Ici, le rôle del’arduino, c’est de faire le lien entre le matériel du robot et les requêtes. Pour avancer, il va envoyer des impulsions qui vont bien vers les moteurs pas à pas.
Rien que cette partie est déjà un travail conséquent.

Ce que tu décris n’est pas une preuve de concept, c’est un ensemble fonctionnel. Je me demande si il est obligatoire de piloter du matériel pour ce projet. Si oui, je partirais sur quelque chose de bien moins ambitieux, par exemple, analyse le résultat d’un lancer de dé. Si ça marche, le faire pour 3 dés. Si ça marche, jouer au 421.
A la limite, pour un tel projet, on n’a pas besoin d’un mécanisme pour lancer le dé, seulement d’une caméra pour analyser l’image du dé.

+0 -0

Un arduino ne peut pas faire les actions que tu cites. Il faut pour cela un PC assez puissant. Je pense que l’arduino embarqué se va communiquer avec le PC soit en Bluetooth, soit en WiFi.

Dans mes explications, tu as pu voir que j’ai bien dis que c’était un serveur et pas l’arduino qui fais les calculs. L’arduino ne sert qu’a transmettre les informations du capteur et recevoir des informations à éxécuter.

"Une preuve de concept ou démonstration de faisabilité, est une réalisation ayant pour vocation de montrer la faisabilité d’un procédé ou d’une innovation."

Après j’avoue que pour la mise en pratique, c’est par intérêt personnel

C’est que je nai pas vu le mot "serveur" dans ton post d’origine.
quoi qu’il en soit, la mise au point d’un arduino qui gère le robot auquel tu penses est un très gros travail, qui ne fait pas intevenir le machine learning.
Comment va se faire l’apprentissage du système ? A propos, qu’est ce qu’il doit apprendre ? Tu aurais intérêt à préciser quel concept il s’agit d’approcher.

+0 -0

Le robot n’apprend pas réellement, c’est le serveur qui apprend grâce à la classification d’image (Le robot envoie une image au serveur qui renvoie la catégorie d’objet, le robot agit donc en fonction de l’image pour prendre des "décisions")

Oui, c’est un gros travail qui risque d’être laborieux mais plein plein de connaissances à en tirer

Bonjour rayandfz,

Dans un premier temps, je t’invite à simplifier méchamment la portée de ton projet, et de séparer les parties Arduino et IA, qui sont toutes les deux intéressantes, mais toutes les deux très complexes et un projet à part entière.

Côté Arduino, rien qu’un robot qui avance et recule, et s’arrête avant de taper un obstacle détecté par infra-rouge ou ultrason, c’est un bon projet de base pour mesurer la complexité du truc. C’est suffisant pour itérer derrière, tout en ayant une base.

Je ne parle pas de bras robotisé ou de contournement, rien que marche / arrêt, c’est pas mal, je pense. Rien que gérer les pentes va déjà être un sacré bazar, je pense.

Côté IA, de la reconnaissance de son, sans parler d’individu. Juste, j’ai dit « avance », il a compris « avance ». Sur un bon micro de PC. C’est un problème complexe qui n’est pas encore bien résolue par beaucoup de boite, il suffit de voir la qualité lamentable des services téléphoniques qui vous proposent de vous exprimer naturellement avant de répondre « Je n’ai pas compris votre requête » et de vous renvoyer vers un humain 1

Ensuite, tu peux coupler les deux, et quand quelqu’un dit « avance », le robot avance jusqu’à rencontrer un obstacle.

Ce sous-projet a une portée bien moindre que ce que tu proposes, mais il est déjà d’une très grande complexité de mon point de vue, et t’obligera à apprendre plein de trucs. Et je parie qu’il te faudra déjà quelques mois pour mettre ça en place si c’est la première fois que tu touches à Arduino. ^^


  1. Autre exemple : un anglais vivant en France s’amusait sur les réseaux sociaux qu’Alexa, l’IA d’Amazon, ne comprenait pas quand il demandait à jouer une chanson avec un titre anglais ! L’IA avait été entrainée avec une prononciation à la française de l’anglais, donc l’anglais avec un bon accent n’était pas bien reconnu…
+4 -0

Salut, je propose une idée lancée comme ça, à voir si ça peut apporter quelque chose ou pas.

Pourquoi pas réaliser ton robot en URDF et de le simuler via Bullet Physics. Bullet Physics peut-être installé en c++ mais il y a aussi une api qui fonctionne avec Python et qui est très simple d’utilisation.

L’avantage d’une telle solution serait que tu pourrais lancer une multitude de tests les uns à la suite des autres pendant que tu dors et laisser ton réseau de neurones apprendre par essais et erreurs.

Pour la reconnaissance d’images, les réseaux à convolutions de mémoire sont plutôt efficaces. Comme il s’agit de ton champ d’études, je ne m’étend pas sur le sujet.

Pour info, Bullet Physics est utilisé par Boston Dynamics.

Bullet Physics
Bullet Physics

https://pybullet.org/wordpress/

Mais aussi :

https://pybullet.org/wordpress/index.php/2020/04/03/learning-agile-robotic-locomotion-skills-by-imitating-animals/

Un fichier URFF :

humanoid

En espérant t’avoir aidé un peu sans apporter trop de confusion

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte