Programmation de robots avec JavaScript

39

En tant que personne qui passe la majorité de son temps à programmer en JavaScript, quel est le meilleur moyen de se lancer dans la petite robotique sans avoir à trop s'écarter de mes préoccupations linguistiques actuelles?

Existe-t-il des kits de projet ou des outils qui utilisent le langage JavaScript pour rendre le champ plus accessible aux développeurs comme moi? Je serais même intéressé par les environnements virtuels où tout le code est exécuté dans une simulation.

Sampson
la source
3
Vous devriez vérifier ce post ... weblog.bocoup.com/javascript-arduino-programming-with-nodejs Il discute d'une implémentation Js pure du protocole utilisé pour Arduino. Des trucs plutôt cool.
Chris Gutierrez
J'aimerais voir une implémentation de nodejs en cours d'exécution sur le robot. On peut simplement contrôler le robot sur le Web à l'aide de websockets.
Seigneur Loh.
Vous ne programmez pas en JavaScript. Vous écrivez des scripts (utilisés sur un navigateur pour la manipulation du DOM par le client). Vous pouvez programmer en JAVA, ce qui est complètement différent. node.jsce n'est pas javascript non plus. C'est une bibliothèque C qui interprète les appels AJAX comme un mini-serveur et qui est utilisée pour les demandes volumineuses (par exemple sur eBay). Il n'est pas nécessaire d'actualiser une page sur un élément qui se termine car javascript synchronise le prix et l'heure des enchères à l'aide du noeud. .js réponse extrêmement rapide tout en réduisant la surcharge de trafic) node.js est bon pour Arduino parce qu'il estC
Piotr Kula
Donc, vous programmez le bot cet vous y connectez en utilisant node.js - qui utilise intrinsèquement JavaScript ajax pour requête mais vous pouvez également utiliser des requêtes de serveur ou tout autre code intelligent qui n'est pas lié à JavaScript de toute façon.
Piotr Kula
Le code Arduino est-il le seul moyen efficace actuellement?
Huzo

Réponses:

22

Il existe quelques projets qui associent la plate-forme Arduino au moteur d’exécution javascript de Node.js. Jetez un coup d'œil à Johnny-Five , une bibliothèque située au-dessus du protocole de contrôle à distance Arduino Firmata ou node-reflecta , qui est une interface Node.js pour le protocole de contrôle à distance Arduino Reflecta.

J'ai personnellement construit un robot contrôlé par Node.js appelé RocketBot , qui combine nœud-reflecta avec nœud-joystick sur un Beaglebone et un Arduino afin que je puisse attester que cette approche fonctionne bien.

Jay Beavers
la source
12

Hmm, question intéressante! Personnellement, je vous suggère de jeter un coup d’œil sur la plate-forme Arduino. Il est programmé en C, donc la syntaxe va être ... familière pour un écrivain JavaScript. À mon humble avis, savoir comment la syntaxe (avec les boucles, si / que des blocs, etc.) est agencée représente 70% de la bataille, une fois que vous êtes familiarisé avec cela, vous pouvez jouer avec plug-and-play. Vous pouvez vous procurer un kit de démarrage pour environ 30 $ en ligne auprès des experts de SparkFun.com ou d’adafruit.com, vous pouvez le programmer sur un PC, un ordinateur Mac ou Linux, et il est fourni avec suffisamment d’exemples pour vous faciliter la tâche. la langue rapidement. Je ne dis pas que vous allez simplement y insérer du code JavaScript et y aller, mais j'étais un programmeur JavaScript lorsque j'ai commencé à utiliser Arduino, et j'ai trouvé qu'il était assez facile de le récupérer. Bonne chance,

PS - Vous devez également être familiarisé avec la construction de circuits électroniques (lumières, moteurs, etc.), mais tout bon kit d’introduction Arduino digne de ce nom vous permettra de démarrer si vous n’avez aucune expérience.

Chris
la source
3
PS - Une bonne question pour le jeune site Robotics.SE récemment créé, je pense :)
Chris
1
Excellente réponse, @Chris. J'ai entendu parler de la plate-forme Arduino par d'autres développeurs JavaScript. C'est peut-être le meilleur médicament d'initiation pour un développeur cherchant à devenir accro.
Sampson
1
En tant que jeune développeur JavaScript / Web, votre question est extrêmement intéressante. Comme indiqué précédemment, il existe des plates-formes pour node.js et d'autres versions, mais si vous êtes vraiment à l'aise en JavaScript, vous pourrez apprendre facilement n'importe quelle autre langue, ce que je recommande vivement. Cela vous permettra non seulement de mieux comprendre l'informatique fondamentale, mais facilitera également l'apprentissage de nouvelles choses.
OneChillDude
8

Robot Operating System (ROS) offre la possibilité d'utiliser Javascript pour contrôler vos robots. Plus précisément, vous voudrez regarder rosbridge . Vous devrez ensuite utiliser rosserial pour vous connecter au microcontrôleur contrôlant votre robot.

Bien que je sois un grand fan de ROS, c’est une façon trop compliquée de commencer à explorer le domaine de la robotique à mon humble avis. Vous seriez mieux préparé à prendre un Arduino et à apprendre un peu de C. Arduino fait un excellent travail de simplification du processus et C n’est pas un grand écart par rapport à JS du point de vue de la syntaxe.

DaemonMaker
la source
5

En règle générale, il existe de nombreuses façons d'utiliser node.js avec une plate-forme, comme celle-ci pour le RPi . Il y en a beaucoup plus similaires si vous les recherchez .

ArduGate est un autre exemple intéressant: il permet aux pages Web de communiquer avec l’arduino via JS (bien que ce ne soit probablement pas exactement ce que vous vouliez, car il ne compile pas et ne se charge pas dans l’arduino)

Bien que je ne vois vraiment pas ce qui ne va pas avec l’utilisation d’une autre langue. J'écris moi-même principalement en JS, mais je me trouve parfaitement à l'aise pour programmer un Arduino en C ++ (il permet également le C et Java, et si vous mettez un peu de travail, pas mal de langages supplémentaires ). Rappelez-vous que nous n’avons besoin de rien de fantaisie pour programmer un robot - seulement des ifs, fors, whiles, switchesclass. Apprenez la syntaxe, et vous êtes prêt à partir :) La seule chose à faire est que C / C ++ / Java est fortement typé (bien que si vous utilisez le RPi, python est faiblement typé mais difficile à plus d'un million d'exemplaires), vous risquez d’être un peu frustré au début lorsque vous devez spécifier des types pour tout. L'un des avantages de l'utilisation des langues natives est qu'il est beaucoup plus facile de trouver des API et des exemples de code sur le net. Par exemple, à part ArduGate (qui l’a intégrée et qui n’est probablement pas ce que vous vouliez), je ne trouve aucun moyen d’accéder à la mémoire EEPROM - une tâche courante. Donc, à moins de vouloir s'en tenir à des programmes simples, il est préférable d'utiliser les langues natives.

Manishearth
la source
2

Un de mes amis possède en fait un robot de réservoir assez puissant contrôlé avec NodeJS via wifi. Le robot lui-même n'est pas exactement une "petite robotique" pesant 150 livres, mais vous pourriez probablement en apprendre beaucoup sur le code source. Il a un netbook à bord qui gère un serveur Web et qui parle à un Arduino. Vous pouvez trouver le code source sur sa page de projet Github . Le contrôle en temps réel depuis un navigateur Web sur un autre ordinateur est étonnamment réactif.

Joe Baker
la source
2

Microsoft Robotics utilise un protocole appelé DSSP (Decentralized Software Services Protocol) et a publié les spécifications sous une licence qui permet à quiconque de l'implémenter dans n'importe quelle langue. Le protocole DSSP est totalement compatible avec les normes Web actuelles et je pense que ce serait une bonne idée de le mettre en œuvre en JavaScript et NodeJS. Cela peut permettre à votre application de noeud d'interagir avec tous les services de robotique DSS disponibles aujourd'hui.

orad
la source
1

Programmer l' AR.Drone 2.0 avec Javascript est super amusant. Voici un exemple qui permet à un drone de décoller, de se déplacer, de faire un retournement puis d'atterrir, le tout à l'aide de la bibliothèque node-ar-drone :

var arDrone = require('ar-drone');
var client = arDrone.createClient();

client.takeoff();

client
  .after(5000, function() {
    this.clockwise(0.5);
  })
  .after(3000, function() {
    this.animate('flipLeft', 15);
  })
  .after(1000, function() {
    this.stop();
    this.land();
  });

La publication de blog NodeBots - L'essor de JS Robotics décrit les avantages de javascript pour la robotique, en particulier la manière naturelle dont les objets et les actions du monde réel peuvent être modélisés sous forme de processus chaînables et événementiels. L'exemple de code ci-dessus pour animer un drone ressemble beaucoup à l'utilisation de jQuery pour animer un élément HTML:

$("#foo")
  .slideUp(300)
  .delay(800)
  .fadeIn(400);
John Wiseman
la source
J'ai modifié la réponse pour qu'elle soit plus spécifique et ajoute plus de contexte. Merci pour les commentaires.
John Wiseman
Merci John, c'est un excellent montage, le genre de chose qui constitue une réponse à l'épreuve du temps.
Mark Booth
0

Il existe également un projet appelé Espruino , qui est un interpréteur JavaScript pour les microcontrôleurs ARM à faible consommation. C'est une réécriture du projet tiny-js , un petit interpréteur C ++ pour Javascript.

Robz
la source
0

Il pourrait être utile de rechercher des projets de robotique basés sur javascript en ligne, car la communauté de robotique basée sur javascript se développe rapidement depuis que cette question a été posée. Par exemple, le blogueur derrière https://burningservos.com a documenté les processus de construction d'un robot à quatre pattes et discute de plusieurs bibliothèques javascript que le blogueur a évaluées ou utilisées. Il y a aussi une section "matériel" dans glitch (ou même sur Adafruit et Hackster.io ) où les gens partagent leurs projets de piratage matériel basés sur javascript, où vous pouvez consulter les bibliothèques qu'ils ont utilisées.

Michael Jae-Yoon Chung
la source