Aller au contenu


Photo
* * * * * 5 note(s)

Mes robots web sécurisés avec accès publique !

Robot Node.js Serveur Web UHF Faible latence Radioamateur PIC32 HTML5 H.264

245 réponses à ce sujet

#1 Serveurperso

Serveurperso

    Membre passionné

  • Membres
  • PipPipPip
  • 394 messages
  • Gender:Male
  • Location:Paris
  • Interests:Systèmes/Réseaux/Dev/Hardware/RF/Optique/Lasers...

Posté 08 avril 2017 - 02:43

J'édite totalement le premier post avec des vidéos de démo plus parlantes. C'est un résultat inespéré de pouvoir faire du SLAM (cartographie et localisation simultanées) parfaitement fluide sur un uC Arduino-like 80MHz du coup cette modif va donner un petit coup de vieux aux posts suivants:) Le SLAM est le résultat de notre travail avec Mike118 sans qui il n'existerait pas.

 

Vidéo avec pilotage web simultané de plusieurs robots chez moi :

 

Vidéo de Mike118 pour Vigirobotics.com avec la démo de notre algorithme de SLAM

 

Et enfin l'accès réel via le cloud Vigibot.com qui est une copie officielle de ma page sur serveur perso d'origine.

Ce "widget" donne accès a mon premier robot, il s'appelle "Radiobot" car c'est le seul de la flotte à disposer d'une liaison UHF longue portée "non-Wi-Fi" et aucune carte embarquée Linux à bord comme tout les autres :

 

 

Les autres robots sont sur www.vigibot.com qui sera bientôt en libre accès avec un fichier open-source pour faire rapidement un robot pas cher à l'aide d'une raspberry PI et de servomoteurs.


Cloud de serveurs à faible latence pour la téléopération sécurisée de robots mobiles, drones et autres systèmes embarqués temps réel

Serveur de développement : https://www.serveurp...om/?page=robots
Accès officiel aux robots : https://www.vigibot.com
News : https://www.vigirobotics.com

Radiobot = Grande base mobile mecanum - 8 caméras, liaisons radio UHF (non Wi-Fi), PIC32 bare-metal + serveur NodeJS déporté
Xubot = Petite base mobile mecanum - 3 caméras, IHM web embarquée sur le robot, liaison Wi-Fi + portail captif, PIC32 bare-metal + serveur NodeJS et vidéo H.264 faible latence (Odroid XU4Q)
Robil = Comme Xubot mais avec une Raspberry PI et sa caméra
Zoombot = Caméra motorisée Axis 214 PTZ (Pan Tilt Zoom)
Raspibot = Une Raspberry PI + une PI caméra + quelques servomoteurs + un client Node.js Open-Source = un robot web fluide et économique.


#2 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 270 messages
  • Gender:Male

Posté 08 avril 2017 - 03:32

Salut et bienvenue! Excellent tout ça, je viens d'essayer! On va sûrement te poser plein de question ;)
Tu prévois une suite, comme ajouter des outils ou une navigation autonome ?

#3 yougo

yougo

    Habitué

  • Membres
  • PipPip
  • 227 messages

Posté 08 avril 2017 - 03:33

C'est énorme !!!!  :crazy:

Ça ne te dérange pas que des gens puissent avoir accès a ton "intimité"  ?

 

Quelle sont les caméras utilisées ? les mêmes que les gens qui font des drones fpv ? 


Venez check le Twitter : 

 

https://twitter.com/Projet_WALK_E

 


#4 Serveurperso

Serveurperso

    Membre passionné

  • Membres
  • PipPipPip
  • 394 messages
  • Gender:Male
  • Location:Paris
  • Interests:Systèmes/Réseaux/Dev/Hardware/RF/Optique/Lasers...

Posté 08 avril 2017 - 03:48

Oui c'est très évolutif, je pense ajouter une géolocalisation d’intérieur en ultra large bande (UWB) car je trouve que les algos SLAM avec ce genre de lidars relativement abordables sont expérimentaux et usines à gaz (faut ROS), lents et peut fiables (j'aime le genre zéro bug en H24/7) d'ou le code C sur PIC32 sans OS....

 

Non ça me dérange pas car c'est sous mon contrôle et y a pas beaucoup de visites souvent des potes ou des réguliers que je connais depuis un bye. c'est surtout des bonnes rigolades et une sorte de truc "vivant" que je peux désactiver en 1 clic au besoin.

 

Oui pour les caméras, analogique CCD PAL. Pour des raisons de liaison radio longue portée (je joue parfois dans mon parking avec 5/6 murs en béton armé à traverser) et la résolution faible permet un straming fluide dans le canal node.js


Cloud de serveurs à faible latence pour la téléopération sécurisée de robots mobiles, drones et autres systèmes embarqués temps réel

Serveur de développement : https://www.serveurp...om/?page=robots
Accès officiel aux robots : https://www.vigibot.com
News : https://www.vigirobotics.com

Radiobot = Grande base mobile mecanum - 8 caméras, liaisons radio UHF (non Wi-Fi), PIC32 bare-metal + serveur NodeJS déporté
Xubot = Petite base mobile mecanum - 3 caméras, IHM web embarquée sur le robot, liaison Wi-Fi + portail captif, PIC32 bare-metal + serveur NodeJS et vidéo H.264 faible latence (Odroid XU4Q)
Robil = Comme Xubot mais avec une Raspberry PI et sa caméra
Zoombot = Caméra motorisée Axis 214 PTZ (Pan Tilt Zoom)
Raspibot = Une Raspberry PI + une PI caméra + quelques servomoteurs + un client Node.js Open-Source = un robot web fluide et économique.


#5 Serveurperso

Serveurperso

    Membre passionné

  • Membres
  • PipPipPip
  • 394 messages
  • Gender:Male
  • Location:Paris
  • Interests:Systèmes/Réseaux/Dev/Hardware/RF/Optique/Lasers...

Posté 08 avril 2017 - 03:56

J'aimerais aussi ajouter une zone de script sur la page (avec un bouton upload) permettant de balancer une séquence de commandes simples que le robot exécutera de lui même en toute autonomie comme :

 

Avancer de 50cm

Tourner de 45 degrés

Avancer à 50cm de l'obstacle

S'aligner à l'obstacle de droite : Ramer-Douglas-Peucker embarqué fonctionnel mais j'ai une difficulté pour lui faire fermer le cercle et en cas d'obstacle sur le robot, donc reste du taf.

 

ça pourrait permettre de lui faire faire des missions complexes en boucle sans se décaler, sans localisation indoor et sans faire de SLAM !

 

- Lui ajouter un bras avec capteur de pression sur la pince et lui dire de pincer avec puissance asservie (bras pilotable par exemple en X-Y commutable en X-Z à la souris / au tactile)

etc. etc... ya tellement de choses à faire :D

 

...


Cloud de serveurs à faible latence pour la téléopération sécurisée de robots mobiles, drones et autres systèmes embarqués temps réel

Serveur de développement : https://www.serveurp...om/?page=robots
Accès officiel aux robots : https://www.vigibot.com
News : https://www.vigirobotics.com

Radiobot = Grande base mobile mecanum - 8 caméras, liaisons radio UHF (non Wi-Fi), PIC32 bare-metal + serveur NodeJS déporté
Xubot = Petite base mobile mecanum - 3 caméras, IHM web embarquée sur le robot, liaison Wi-Fi + portail captif, PIC32 bare-metal + serveur NodeJS et vidéo H.264 faible latence (Odroid XU4Q)
Robil = Comme Xubot mais avec une Raspberry PI et sa caméra
Zoombot = Caméra motorisée Axis 214 PTZ (Pan Tilt Zoom)
Raspibot = Une Raspberry PI + une PI caméra + quelques servomoteurs + un client Node.js Open-Source = un robot web fluide et économique.


#6 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 277 messages
  • Gender:Male
  • Location:Paris

Posté 08 avril 2017 - 05:13

Hannn Yo Pascal !! Trop bon ça 113.gif J'adore !! Avec du nodeJS dedans en plus !! Félicitations.

Viens plus souvent !!  :)


Podcast Made By Humans

Je cherche des volontaires de tous niveaux pour nos petites conversations entre hobbyistes.

Accès aux salles secrètes

 


#7 Serveurperso

Serveurperso

    Membre passionné

  • Membres
  • PipPipPip
  • 394 messages
  • Gender:Male
  • Location:Paris
  • Interests:Systèmes/Réseaux/Dev/Hardware/RF/Optique/Lasers...

Posté 08 avril 2017 - 05:14

Hannn Yo Pascal !! Trop bon ça attachicon.gif113.gif J'adore !! Avec du nodeJS dedans en plus !! Félicitations.

Mais viens plus souvent :)

lol, du NodeJS avec Apache en front, reverse proxy websocket, multiplexé, comme ça toutes les instances de serveurs node (dont celle du robot) passe par le port 80 (ou 443) top moumoute comme la moquette sur laquelle le robot roule !!! et node ne sert que du contenu websocket (socket.io) pas de statique


Cloud de serveurs à faible latence pour la téléopération sécurisée de robots mobiles, drones et autres systèmes embarqués temps réel

Serveur de développement : https://www.serveurp...om/?page=robots
Accès officiel aux robots : https://www.vigibot.com
News : https://www.vigirobotics.com

Radiobot = Grande base mobile mecanum - 8 caméras, liaisons radio UHF (non Wi-Fi), PIC32 bare-metal + serveur NodeJS déporté
Xubot = Petite base mobile mecanum - 3 caméras, IHM web embarquée sur le robot, liaison Wi-Fi + portail captif, PIC32 bare-metal + serveur NodeJS et vidéo H.264 faible latence (Odroid XU4Q)
Robil = Comme Xubot mais avec une Raspberry PI et sa caméra
Zoombot = Caméra motorisée Axis 214 PTZ (Pan Tilt Zoom)
Raspibot = Une Raspberry PI + une PI caméra + quelques servomoteurs + un client Node.js Open-Source = un robot web fluide et économique.


#8 yougo

yougo

    Habitué

  • Membres
  • PipPip
  • 227 messages

Posté 08 avril 2017 - 05:30

par contre c'est quoi le scanner 3d que tu utilises ? 


Venez check le Twitter : 

 

https://twitter.com/Projet_WALK_E

 


#9 Serveurperso

Serveurperso

    Membre passionné

  • Membres
  • PipPipPip
  • 394 messages
  • Gender:Male
  • Location:Paris
  • Interests:Systèmes/Réseaux/Dev/Hardware/RF/Optique/Lasers...

Posté 08 avril 2017 - 05:32

scanner 3d ? ou ça :D c'est un scanner 2D - Un "télémètre à balayage laser 2D par triangulation" lol - : le RPLIDAR v2


Cloud de serveurs à faible latence pour la téléopération sécurisée de robots mobiles, drones et autres systèmes embarqués temps réel

Serveur de développement : https://www.serveurp...om/?page=robots
Accès officiel aux robots : https://www.vigibot.com
News : https://www.vigirobotics.com

Radiobot = Grande base mobile mecanum - 8 caméras, liaisons radio UHF (non Wi-Fi), PIC32 bare-metal + serveur NodeJS déporté
Xubot = Petite base mobile mecanum - 3 caméras, IHM web embarquée sur le robot, liaison Wi-Fi + portail captif, PIC32 bare-metal + serveur NodeJS et vidéo H.264 faible latence (Odroid XU4Q)
Robil = Comme Xubot mais avec une Raspberry PI et sa caméra
Zoombot = Caméra motorisée Axis 214 PTZ (Pan Tilt Zoom)
Raspibot = Une Raspberry PI + une PI caméra + quelques servomoteurs + un client Node.js Open-Source = un robot web fluide et économique.


#10 Serveurperso

Serveurperso

    Membre passionné

  • Membres
  • PipPipPip
  • 394 messages
  • Gender:Male
  • Location:Paris
  • Interests:Systèmes/Réseaux/Dev/Hardware/RF/Optique/Lasers...

Posté 08 avril 2017 - 05:38

J'aime bien Bender (Futurama) moi mdr


Cloud de serveurs à faible latence pour la téléopération sécurisée de robots mobiles, drones et autres systèmes embarqués temps réel

Serveur de développement : https://www.serveurp...om/?page=robots
Accès officiel aux robots : https://www.vigibot.com
News : https://www.vigirobotics.com

Radiobot = Grande base mobile mecanum - 8 caméras, liaisons radio UHF (non Wi-Fi), PIC32 bare-metal + serveur NodeJS déporté
Xubot = Petite base mobile mecanum - 3 caméras, IHM web embarquée sur le robot, liaison Wi-Fi + portail captif, PIC32 bare-metal + serveur NodeJS et vidéo H.264 faible latence (Odroid XU4Q)
Robil = Comme Xubot mais avec une Raspberry PI et sa caméra
Zoombot = Caméra motorisée Axis 214 PTZ (Pan Tilt Zoom)
Raspibot = Une Raspberry PI + une PI caméra + quelques servomoteurs + un client Node.js Open-Source = un robot web fluide et économique.


#11 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 7 375 messages
  • Gender:Male
  • Location:Cholet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 08 avril 2017 - 06:53

Super intéressant ça ! 
J'ai testé juste le contrôle des servo de la caméra et je trouve le résultat très fluide ! 

Si je veux installer le même genre de fonctionnalité ( téléopération + stream vidéo ) sur mon robot il me faut quoi ? :P 

+> Un serveur chez moi relié à internet et port avec toute la partie   " NodeJS avec Apache en front, reverse proxy websocket, multiplexé, comme ça toutes les instances de serveurs node (dont celle du robot) passe par le port 80 (ou 443) top moumoute comme la moquette sur laquelle le robot roule !!! et node ne sert que du contenu websocket (socket.io) pas de statique  " que perso je ne maîtrise pas du tout.  => Un raspberry ou autre ordinateur monocarte du style ça suffit ? 

+> Un ordinateur embarqué dans le robot relié en wifi au serveur ? qui va recevoir les commandes retourner les données et le flux vidéo , tu utilise quoi dans ton robot ? Rpi ? autre ? 

 

+> N caméra  ? Branchée sur l'ordinateur embarqué  ?  comment tu récupère et retransmet le flux ? 

 

+> Le reste du robot qui va recevoir et envoyer les données à l'ordinateur embarqué et effectuer les différentes actions ...

 

Tu nous fais un tuto ? :P


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !

 

Les réalisations de Mike118  

 

 

 


#12 Serveurperso

Serveurperso

    Membre passionné

  • Membres
  • PipPipPip
  • 394 messages
  • Gender:Male
  • Location:Paris
  • Interests:Systèmes/Réseaux/Dev/Hardware/RF/Optique/Lasers...

Posté 08 avril 2017 - 07:23

Oui il est possible de simplifier. (c'est pas un tuto lol)

Dans mon robot je n'ai aucun OS, c'est uniquement un PIC32, du C codé par moi (et l'équipe qui développe le portage du CORE Arduino pour PIC32), et du hardware !!! Pas d'OS + code très maitrisé = pas de plantage !!!

Je te recommande de commencer en full numérique WiFi et PI car tu peux gérer le robot + la vidéo.

Je te recommande aussi d'associer la PI et un Arduino mega si possible pour être au top niveau I/O et UART (serial ports TTL) mais pour un ptit robot basique pas besoin !!!

 

Un serveur NodeJS sur ta PI, une IP fixe ou un DDNS gratos MAJ par ton boitier qui fait le routage - ou ta box - j'ai aperçu un thread node sur PI ici, du modérateur ci dessus.

Un logiciel serveur en Node, du coup ce sera ton robot le serveur IP, moi j'ai un intermédiaire, serveurperso.com qui synthétise les commandes des multiples visiteurs en trames radio régulières (TDD).

Un logiciel client en JavaScript (dans du HTML5, perso je fais du XHTML5 en fait car très pedantic lol)

 

Une liaison de données entre ton serveur et le robot -> IP via WiFi pour simplifier -> moi ce sont des radiomodem UHF à bande assez étroite

Une liaison vidéo entre ta caméra et ton serveur -> IP car ta PI génère facilement du MJEG, documente toi sur MJPG-Streamer (version patchée PI cam) c'est une tuerie -> moi c'est de la vidéo analogique avec un poste de réception développé maison, donc acquisition USB qui ajoute un pico poil de latence par rapport a du numérique de bout en bout d'ailleurs (surtout si numérique sans compression temporelle, le MJPEG étant une compression image a image, uniquement spatiale).

 

moi j'ai fait :

COMMANDE & Telemetrie : visiteur <-> IP <-> serveur <-> modems UHF <-> PIC32 du robot

VIDEO (attention c compliqué) : robot -> TX analogique PAL -> RX analogique maison (usine à gaz a lui tout seul) -> Clé USB acquisition vidéo sur le serveur -> /dev/video hardware -> ffmpeg pour déinterlace -> /dev/video virtuel -> MJPEG streamer -> Code NodeJS (et la je résume a fond) -> Client.

 

Je te propose

COMMANDE & télémétrie : visiteur -> IP -> serveur Node dans ton robot -> I/O de la PI attaqués direct en Node (ou une étape suplémentaire avec SERIAL PORT si tu veux un arduino intermédiaire pour avoir masse d'I/O)

VIDEO : Raspicam -> MJPEG_Streamer -> tu balances direct le flux dans Firefox ça fonctionne ! mais t'auras de la latence sauf si comme moi tu codes le client vidéo MJPEG javascript !

 

C'est long de tout expliquer:s il me faut des questions précise.

Par exemple pour la liaison vidéo entre le serveur node et le client je décode le MJPEG que je stock image à image dans une variable globale de NodeJS et que mon client JavaScript récupère, encodée en base64 et affiche dans une balise IMG d'un élément CANVAS (je crois que j'ai pas sauté d'étapes)


Cloud de serveurs à faible latence pour la téléopération sécurisée de robots mobiles, drones et autres systèmes embarqués temps réel

Serveur de développement : https://www.serveurp...om/?page=robots
Accès officiel aux robots : https://www.vigibot.com
News : https://www.vigirobotics.com

Radiobot = Grande base mobile mecanum - 8 caméras, liaisons radio UHF (non Wi-Fi), PIC32 bare-metal + serveur NodeJS déporté
Xubot = Petite base mobile mecanum - 3 caméras, IHM web embarquée sur le robot, liaison Wi-Fi + portail captif, PIC32 bare-metal + serveur NodeJS et vidéo H.264 faible latence (Odroid XU4Q)
Robil = Comme Xubot mais avec une Raspberry PI et sa caméra
Zoombot = Caméra motorisée Axis 214 PTZ (Pan Tilt Zoom)
Raspibot = Une Raspberry PI + une PI caméra + quelques servomoteurs + un client Node.js Open-Source = un robot web fluide et économique.


#13 Serveurperso

Serveurperso

    Membre passionné

  • Membres
  • PipPipPip
  • 394 messages
  • Gender:Male
  • Location:Paris
  • Interests:Systèmes/Réseaux/Dev/Hardware/RF/Optique/Lasers...

Posté 08 avril 2017 - 07:43

Je peux te filer des sous systèmes mais à toi d'adapter ou poser des questions précise :)


Cloud de serveurs à faible latence pour la téléopération sécurisée de robots mobiles, drones et autres systèmes embarqués temps réel

Serveur de développement : https://www.serveurp...om/?page=robots
Accès officiel aux robots : https://www.vigibot.com
News : https://www.vigirobotics.com

Radiobot = Grande base mobile mecanum - 8 caméras, liaisons radio UHF (non Wi-Fi), PIC32 bare-metal + serveur NodeJS déporté
Xubot = Petite base mobile mecanum - 3 caméras, IHM web embarquée sur le robot, liaison Wi-Fi + portail captif, PIC32 bare-metal + serveur NodeJS et vidéo H.264 faible latence (Odroid XU4Q)
Robil = Comme Xubot mais avec une Raspberry PI et sa caméra
Zoombot = Caméra motorisée Axis 214 PTZ (Pan Tilt Zoom)
Raspibot = Une Raspberry PI + une PI caméra + quelques servomoteurs + un client Node.js Open-Source = un robot web fluide et économique.


#14 Serveurperso

Serveurperso

    Membre passionné

  • Membres
  • PipPipPip
  • 394 messages
  • Gender:Male
  • Location:Paris
  • Interests:Systèmes/Réseaux/Dev/Hardware/RF/Optique/Lasers...

Posté 08 avril 2017 - 07:44

une PI va être limite pour la partie vidéo si elle passe par NodeJS je pense... même une 3, pour du PAL du 720 576 alors avec la PI cam si utilisée en HD les FPS c'est mort.

 

Ou alors faut faire du simple push de JPEG, voila la soluce la plus simple. direct de la PI cam au client sans passer par Node. simplifions comme une bête cam sur IP


Cloud de serveurs à faible latence pour la téléopération sécurisée de robots mobiles, drones et autres systèmes embarqués temps réel

Serveur de développement : https://www.serveurp...om/?page=robots
Accès officiel aux robots : https://www.vigibot.com
News : https://www.vigirobotics.com

Radiobot = Grande base mobile mecanum - 8 caméras, liaisons radio UHF (non Wi-Fi), PIC32 bare-metal + serveur NodeJS déporté
Xubot = Petite base mobile mecanum - 3 caméras, IHM web embarquée sur le robot, liaison Wi-Fi + portail captif, PIC32 bare-metal + serveur NodeJS et vidéo H.264 faible latence (Odroid XU4Q)
Robil = Comme Xubot mais avec une Raspberry PI et sa caméra
Zoombot = Caméra motorisée Axis 214 PTZ (Pan Tilt Zoom)
Raspibot = Une Raspberry PI + une PI caméra + quelques servomoteurs + un client Node.js Open-Source = un robot web fluide et économique.


#15 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 277 messages
  • Gender:Male
  • Location:Paris

Posté 08 avril 2017 - 08:34

C'est énorme ton système !! Je comprends pas, tu utilise la pi ou pas ?


Podcast Made By Humans

Je cherche des volontaires de tous niveaux pour nos petites conversations entre hobbyistes.

Accès aux salles secrètes

 


#16 Serveurperso

Serveurperso

    Membre passionné

  • Membres
  • PipPipPip
  • 394 messages
  • Gender:Male
  • Location:Paris
  • Interests:Systèmes/Réseaux/Dev/Hardware/RF/Optique/Lasers...

Posté 08 avril 2017 - 08:46

Non, absolument aucune PI sur ce projet.

(Même si j'ai 5 PI qui tournent chez moi 24/7, les webcam du site, de l'imprimante 3D entre autres)

 

Le robot tourne avec un PIC32MX 80MHz "ChipKitifié" c'est à dire "Arduinoifié". Tout comme un ARM "Arduinoifié" donne un Arduino Due...

 

Un PIC32 et du code C non bloquant ça donne puissance monumentale pour gérer un robot.

 

J'utilise les 4 UART avec un gros FIFO, je doit utiliser entre 5 et 10% de la puissance du PIC32, avec l'odométrie omnidirectionnelle, la lecture du LIDAR + la conversion polaire cartésien et l'anti colision avec sa logique floue (sans lib fuzzy / optimisée), l'asservissement PID des 4 moteurs (idem sans lib, code arithmétique integer maison, faire de la boucle ouverte pour les moteurs d'un robot c'est caca), la génération des PWM full hardware du PIC32...

 

Le robot ne fait rien au niveau vidéo, c'est juste comme de la CCTV, un transmetteur vidéo analogique, sauf le multiplexeur analogique pour changer de cam, c'est aussi le PIC32 qui le pilote (4 bits = 16 caméras possibles)

 

Tout en integer sauf les maths de l'odométrie et du LIDAR. (le PIC32 éclate le Cortex M3 en float)


Cloud de serveurs à faible latence pour la téléopération sécurisée de robots mobiles, drones et autres systèmes embarqués temps réel

Serveur de développement : https://www.serveurp...om/?page=robots
Accès officiel aux robots : https://www.vigibot.com
News : https://www.vigirobotics.com

Radiobot = Grande base mobile mecanum - 8 caméras, liaisons radio UHF (non Wi-Fi), PIC32 bare-metal + serveur NodeJS déporté
Xubot = Petite base mobile mecanum - 3 caméras, IHM web embarquée sur le robot, liaison Wi-Fi + portail captif, PIC32 bare-metal + serveur NodeJS et vidéo H.264 faible latence (Odroid XU4Q)
Robil = Comme Xubot mais avec une Raspberry PI et sa caméra
Zoombot = Caméra motorisée Axis 214 PTZ (Pan Tilt Zoom)
Raspibot = Une Raspberry PI + une PI caméra + quelques servomoteurs + un client Node.js Open-Source = un robot web fluide et économique.


#17 Serveurperso

Serveurperso

    Membre passionné

  • Membres
  • PipPipPip
  • 394 messages
  • Gender:Male
  • Location:Paris
  • Interests:Systèmes/Réseaux/Dev/Hardware/RF/Optique/Lasers...

Posté 08 avril 2017 - 09:11

Jamais de delay() (ou toute fonctions similaires) dans du code. Jamais. Amen. Toujours faire des machines à état. Vive switch/case...

 

Un simple Arduino mega 8 bit à assez de puissance pour faire la même chose, (quite à faire une lookup tables de sinus et la trigo en integer c'est tout)

 

Softserial parce qu'on manque de port et qu'on utilise un Arduino classique avec un seul UART, idem que delay() -> poubelle.

 

lol

 

J'ajoute même qu'utiliser les I/O de la PI pour lire écrire des capteurs ou pire générer du PWM c'est crado (sauf si ya un module hard, j'ai pas vérifié).

Il faut n'utiliser que l'UART de la PI, le /dev/serial sous Linux, et commander un arduino, avec un petit protocole maison, et du bon code bas niveau pour exploiter les moteurs, capteurs & co du robot.

Le PID dans l'Arduino bien entendu. On ne fait rien de temps réel ou de génération de signaux avec Linux c'est pas fait pour c'est du bricolage.


Cloud de serveurs à faible latence pour la téléopération sécurisée de robots mobiles, drones et autres systèmes embarqués temps réel

Serveur de développement : https://www.serveurp...om/?page=robots
Accès officiel aux robots : https://www.vigibot.com
News : https://www.vigirobotics.com

Radiobot = Grande base mobile mecanum - 8 caméras, liaisons radio UHF (non Wi-Fi), PIC32 bare-metal + serveur NodeJS déporté
Xubot = Petite base mobile mecanum - 3 caméras, IHM web embarquée sur le robot, liaison Wi-Fi + portail captif, PIC32 bare-metal + serveur NodeJS et vidéo H.264 faible latence (Odroid XU4Q)
Robil = Comme Xubot mais avec une Raspberry PI et sa caméra
Zoombot = Caméra motorisée Axis 214 PTZ (Pan Tilt Zoom)
Raspibot = Une Raspberry PI + une PI caméra + quelques servomoteurs + un client Node.js Open-Source = un robot web fluide et économique.


#18 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 7 375 messages
  • Gender:Male
  • Location:Cholet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 08 avril 2017 - 09:23

donc si je résume : 

 

Pour la vidéo : 

Robot et N camera => Multiplexeur piloté par le PIC 32 => émetteur analogique type RC sans fil  ....  Récepteur analogique => Décodeur ?? Fait maison qui sort en USB => Serveur    

Au passage j'en déduis qu'en sortie du multiplexeur analogique tu rajoutes directement sur l'image les différentes information lidar et autre ... 

 

 

 pour les commandes et les retours de capteurs : 

Serveur <=> USB to UART émetteur récepteur   <.....>  Emetteur Récepteur UART <=> PIC 32  sur le robot ,     

 

 

ai-je bien résumé ? 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !

 

Les réalisations de Mike118  

 

 

 


#19 Serveurperso

Serveurperso

    Membre passionné

  • Membres
  • PipPipPip
  • 394 messages
  • Gender:Male
  • Location:Paris
  • Interests:Systèmes/Réseaux/Dev/Hardware/RF/Optique/Lasers...

Posté 08 avril 2017 - 09:39

Fonctionnement écrit à l'arrache :

 

- Quand un client fait un drag sur l'image du site, à chaque event de mousemove le javascript balance les coordonnées relatives au serveur NodeJS.

 

- Le serveur NodeJS récupère les events de tout les clients et les intègrent à un X Y global.

 

- Ce X Y global est injecté dans des trames qui sont envoyées à intervalle réguliers sur un /dev/serial.

 

- Un modem radio UHF (codé par moi, un fork du firmware SiK que j'ai mis sur GitHub) récupère les trames via son UART et les balancent à la radio.

 

- Sur le robot une radio récupère les trames et rempli l'UART de l'Arduino PIC32.

 

- Une machine d'état dans la loop() vérifie si ya un octet dans l'UART, si oui il le récupère dans un buffer. (idem pour toute la trame).

 

- Le robot dispose de plusieurs fonctions non bloquantes comme le PID, l'odométrie (qui est envoyée dans la trame retour télémétrie:)

 

- Dans le robot la trame reçue ressemble à [ $R | Souris X 16 bits | Y 16 bits | Selecteur de cam | Velocity X | Y | Theta | Flags pour commander des I/O ]

 

- Chaque trame est redondante avec la précédente, 10% des trames suffisent à piloter le robot (comme un drone ou n'importe quelle RC en gros)

 

- Quand le robot reçoit une trame il répond par une trame de télémétrie, si y fait dodo il se réveille. Si y'en a pas depuis N secondes bah dodo veille:)

 

- Le serveur NodeJS dispose donc de la télémétrie et la balance aussi aux clients (socket.io broadcast), et le JavaScript se charge de l'affichage...

 

 

*Il est donc possible de zapper l'étape radio, d'embarquer la PI direct sur le robot... de balancer via /dev/serial à un Arduino, et au final faire le même genre de robot que le mien.*


Cloud de serveurs à faible latence pour la téléopération sécurisée de robots mobiles, drones et autres systèmes embarqués temps réel

Serveur de développement : https://www.serveurp...om/?page=robots
Accès officiel aux robots : https://www.vigibot.com
News : https://www.vigirobotics.com

Radiobot = Grande base mobile mecanum - 8 caméras, liaisons radio UHF (non Wi-Fi), PIC32 bare-metal + serveur NodeJS déporté
Xubot = Petite base mobile mecanum - 3 caméras, IHM web embarquée sur le robot, liaison Wi-Fi + portail captif, PIC32 bare-metal + serveur NodeJS et vidéo H.264 faible latence (Odroid XU4Q)
Robil = Comme Xubot mais avec une Raspberry PI et sa caméra
Zoombot = Caméra motorisée Axis 214 PTZ (Pan Tilt Zoom)
Raspibot = Une Raspberry PI + une PI caméra + quelques servomoteurs + un client Node.js Open-Source = un robot web fluide et économique.


#20 Serveurperso

Serveurperso

    Membre passionné

  • Membres
  • PipPipPip
  • 394 messages
  • Gender:Male
  • Location:Paris
  • Interests:Systèmes/Réseaux/Dev/Hardware/RF/Optique/Lasers...

Posté 08 avril 2017 - 09:43

donc si je résume : 

 

Pour la vidéo : 

Robot et N camera => Multiplexeur piloté par le PIC 32 => émetteur analogique type RC sans fil  ....  Récepteur analogique => Décodeur ?? Fait maison qui sort en USB => Serveur    

Au passage j'en déduis qu'en sortie du multiplexeur analogique tu rajoutes directement sur l'image les différentes information lidar et autre ... 

 

 

 pour les commandes et les retours de capteurs : 

Serveur <=> USB to UART émetteur récepteur   <.....>  Emetteur Récepteur UART <=> PIC 32  sur le robot ,     

 

 

ai-je bien résumé ? 

 

J'étais en train d'écrire le post au dessus qui répond lol.

 

Mais : pas de données dans la vidéo analogique.

 

La liaison radio numérique est bi-directionnelle. C'est du Half Duplex ou plus exactement du TDD pour Time Division Duplexing (et donc du TDM pour Time Division Multiplexing avec seulement 2 interlocuteurs)

 

Pour expliquer le principe NodeJS fait un setInterval() à 20Hz ce qui laisse le temps d'un échange avec le robot, qui répond immédiatement à la trame de commande par une trame de télémétrie. ça ping-pong en permanence.

 

Exact donc.


Cloud de serveurs à faible latence pour la téléopération sécurisée de robots mobiles, drones et autres systèmes embarqués temps réel

Serveur de développement : https://www.serveurp...om/?page=robots
Accès officiel aux robots : https://www.vigibot.com
News : https://www.vigirobotics.com

Radiobot = Grande base mobile mecanum - 8 caméras, liaisons radio UHF (non Wi-Fi), PIC32 bare-metal + serveur NodeJS déporté
Xubot = Petite base mobile mecanum - 3 caméras, IHM web embarquée sur le robot, liaison Wi-Fi + portail captif, PIC32 bare-metal + serveur NodeJS et vidéo H.264 faible latence (Odroid XU4Q)
Robil = Comme Xubot mais avec une Raspberry PI et sa caméra
Zoombot = Caméra motorisée Axis 214 PTZ (Pan Tilt Zoom)
Raspibot = Une Raspberry PI + une PI caméra + quelques servomoteurs + un client Node.js Open-Source = un robot web fluide et économique.




Répondre à ce sujet



  



Aussi étiqueté avec au moins un de ces mots-clés : Robot, Node.js, Serveur, Web, UHF, Faible latence, Radioamateur, PIC32, HTML5, H.264

0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users