Comment nous avons fait un simple robot WebRTC Ă  la maison

Concept

Avez-vous dĂ©jĂ  eu une telle chose qu'après avoir quittĂ© la maison, vous ne vous souvenez pas si vous avez Ă©teint le fer? En discutant d'un autre cas de ce genre avec un ami, une idĂ©e comique est apparue pour fabriquer un robot pour le contrĂ´le visuel Ă  distance des tâches mĂ©nagères. Et en gĂ©nĂ©ral je voulais faire un robot «espion» contrĂ´lĂ© par une camĂ©ra depuis un smartphone sur mes genoux. Cette idĂ©e est nĂ©e chez nous depuis longtemps, mais nous ne l'avons mise la main que maintenant. Et nous sommes immĂ©diatement allĂ©s au bar le plus proche pour discuter. Il n'est pas tout Ă  fait correct de l'appeler un robot. Il s'agit plutĂ´t d'une plate-forme autopropulsĂ©e avec un contrĂ´le de tĂ©lĂ©mĂ©trie sur Internet. Mais l'article utilisera le terme «robot» simplement parce qu'il est plus familier. 





La technologie WebRTC nous convenait parfaitement, car il est assez facile d'organiser le transfert de canaux vidéo, audio et de données entre deux pairs avec un délai de signal minimum. Et nous n'avions aucune expérience avec cette technologie, nous voulions donc vraiment l'essayer.





Un schĂ©ma simplifiĂ© de l'ensemble du système est prĂ©sentĂ© sur la figure. Utilisateur - opĂ©rateur et robot - Raspberry PI entrent chacun dans leur propre page Web, se connectent au serveur de signaux, après quoi une session WebRTC est crĂ©Ă©e entre eux Ă  travers laquelle le flux vidĂ©o du robot est transmis Ă  l'utilisateur et les signaux de contrĂ´le sont transmis au robot. En outre, le robot envoie des signaux de commande Ă  son hĂ´te local, oĂą un autre service les traite et les envoie Ă  GPIO pour contrĂ´ler les moteurs. Tout semble simple. Voici ce que nous avons Ă  ce stade:  





Ensuite, nous traiterons tout cela plus en détail.





Composants

, . , . , .





Raspberry Pi (3b 4), , OS Raspbian. , OpenCV, .. , .





()

- ( ), FPS . Logitech QuickCam Connect Logitech C270 12$. Raspicam, . 





— — , -, . . , :





  1. , .









, . . 





Raspberry Pi . 3.7 DC-DC MT3608, , “”. - . Samsung. , . power- Xiaomi , - . Raspbery Pi4.





L9110, DC-DC , L293N. , . .





, "", -.   “” 1$. Power- , . , Raspberry Pi.  . , . , . -. - power-. 





, , . . JavaScript Python. . , .





NodeJS . :





  • , .





  • , .. -.





  “” . . . , .  .





SignalEmitter. . id - , isControl - . signalServer - uri . .  





const se = new SignalEmitter({
	id: searchParams.get('id'),
	isControl: false,
	signalServer: config.signalServer
});
      
      



WebRTC

RTC. - options SignalEmitter, . isControl - . platformSocket - uri localhost' .





const webrtc = new RTC({
	isControl: false,
	platformSocket: config.platformSocket}, 
se);
      
      



Vue.js, . /public. :





Selenium

, Selenium WebDriver + geckodriver headless . , robot-signal-server/selenium/index.js. , . , . /etc/network/if-up.d/ .





Python. - websocket , GPIO. , : [0…+-1, 0…+-1] JSON. .. , , -1 +1 0.01. , - . (. GItHub )





, . production- - , . , . .





3/4/5G , . :












All Articles