Programmazione di robot con JavaScript


39

Come qualcuno che sta trascorrendo la maggior parte del suo tempo a programmare in JavaScript, qual è la strada migliore per entrare nella piccola robotica senza dover deviare troppo dal mio attuale focus linguistico?

Esistono kit o strumenti di progetto che utilizzano il linguaggio JavaScript che potrebbero rendere il campo più accessibile per gli sviluppatori come me? Sarei anche interessato ad ambienti virtuali in cui tutto il codice viene eseguito in una simulazione.


3
Dovresti dare un'occhiata a questo post ... weblog.bocoup.com/javascript-arduino-programming-with-nodejs Discute un'implementazione Js pura del protocollo usato per Arduino. Roba abbastanza bella.
Chris Gutierrez,

Mi piacerebbe vedere alcune implementazioni di nodejs in esecuzione sul robot. Si potrebbe semplicemente controllare il robot sul web usando i websocket.
Lord Loh.

Non si programma in JavaScript - Si scrivono script (che vengono utilizzati su un browser per la manipolazione del DOM da parte del client) È possibile programmare in JAVA - che è completamente diverso. node.jsneanche javascript. È una libreria C che interpreta le chiamate AJAX come mini server e viene utilizzata per richieste di volume elevato, ad esempio su ebay, non è necessario aggiornare una pagina su un articolo che termina perché javascript sincronizza il prezzo e l'ora dell'offerta utilizzando il nodo .js risposta estremamente rapida riducendo al contempo il sovraccarico di traffico) node.js è buono per Arduino perché lo èC
Piotr Kula

Quindi dovresti programmare il bot ce interfacciarlo usando node.js, che utilizza intrinsecamente JavaScript ajax per la richiesta, ma puoi anche utilizzare richieste del server o altro codice intelligente che non è correlato a JavaScript in alcun modo.
Piotr Kula,

Il codice Arduino è attualmente l'unico modo efficace?
Huzo,

Risposte:


22

Ci sono un paio di progetti là fuori che accoppiano la piattaforma Arduino al motore di esecuzione javascript di Node.js. Dai un'occhiata a Johnny-Five , che è una libreria in cima al protocollo di controllo remoto Arduino Firmata o node-reflecta , che è un'interfaccia Node.js per il protocollo di controllo remoto Arduino Reflecta.

Ho costruito personalmente un robot controllato da Node.js chiamato RocketBot , che combina il nodo-riflesso con il nodo-joystick sopra un Beaglebone e un Arduino in modo da poter attestare che questo approccio funziona bene.


12

Hmm, domanda interessante! Personalmente suggerirei di dare un'occhiata alla piattaforma Arduino. È programmato in C, quindi la sintassi sarà ... familiare, a un writer JavaScript. A mio modesto parere, sapere come è disposta la sintassi (mentre loop, if / than blocks, ecc.) È il 70% della battaglia, una volta che hai familiarità con ciò, puoi collegarti e giocare. Puoi acquistare uno starter kit per circa $ 30 online dalla brava gente su SparkFun.com o adafruit.com, puoi programmarlo su un PC, un Mac o un computer Linux e viene fornito precaricato con esempi sufficienti per semplificarti la lingua rapidamente. Non sto dicendo che lascerai cadere un po 'di codice JavaScript e sarai sulla buona strada, ma ero un programmatore JavaScript quando ho iniziato con Arduino, e ho trovato abbastanza facile da raccogliere ed eseguire. In bocca al lupo,

PS: dovresti anche avere familiarità / familiarità con la costruzione di circuiti elettronici (luci, motori e simili), ma qualsiasi buon kit di introduzione Arduino degno di nota ti farà iniziare se non hai esperienza.


3
PS - Una buona domanda per il nuovo sito Robotics.SE, appena nato, credo :)
Chris,

1
Ottima risposta, @ Chris. Ho sentito parlare della piattaforma Arduino da alcuni altri sviluppatori JavaScript. Forse è il miglior farmaco gateway per uno sviluppatore che vuole essere agganciato.
Sampson,

1
Come giovane sviluppatore JavaScript / web trovo la tua domanda super interessante. Come affermato in precedenza, ci sono piattaforme per node.js e altre varie versioni, tuttavia se ti senti davvero a tuo agio in JavaScript, potresti facilmente imparare qualsiasi altra lingua, che consiglio vivamente. Non solo espande la tua capacità di comprendere l'informatica di base, ma semplifica anche l'apprendimento di nuove cose.
OneChillDude

8

Sistema operativo robot (ROS) offre la possibilità di utilizzare Javascript per controllare i robot. In particolare, vorrai guardare Rosbridge . Sarà quindi necessario utilizzare rosserial per interfacciarsi con il microcontrollore che controlla il robot.

Mentre sono un grande fan di ROS, questo è un modo troppo complicato per iniziare a esplorare il campo della robotica IMHO. Saresti meglio servito a prendere un Arduino e imparare un po 'di C. Arduino fa un ottimo lavoro nel rendere semplice il processo e C non è una grande deviazione da JS dal punto di vista della sintassi.


5

Generalmente ci sono molti modi per usare node.js con una piattaforma, come questa per l'RPi . Ci sono molti più simili se li cerchi .

Un altro interessante è ArduGate , che consente alle pagine Web di comunicare con Arduino tramite JS (anche se probabilmente non è esattamente quello che volevi poiché non si compila e non si carica in Arduino)

Anche se non vedo davvero cosa c'è che non va nell'usare una lingua diversa. Io stesso scrivo principalmente in JS, ma mi trovo perfettamente a mio agio nel programmare un Arduino in C ++ (consente anche C e Java, e se ci metti un po 'di lavoro, parecchie altre lingue ). Ricorda, non abbiamo bisogno di nulla di speciale per programmare un robot - semplicemente normaleif s, fors, whiles, switches e occasionaliclass. Impara la sintassi e sei a posto :) L'unica cosa è che C / C ++ / Java sono fortemente tipizzati (anche se stai usando RPi, python è debolmente digitato ma pignolo in un milione di altri modi), quindi potresti avere un po 'di frustrazione all'inizio quando devi specificare i tipi per tutto. Uno dei vantaggi dell'utilizzo delle lingue native è che è molto più facile trovare API e codice di esempio in rete. Ad esempio, a parte ArduGate (che ha incorporato e probabilmente non è quello che volevi), non riesco a trovare alcun modo per accedere alla EEPROM - un compito comune. Quindi, a meno che tu non voglia attenersi a semplici programmi, è solo meglio usare le lingue native.


2

Un mio amico ha in realtà un robot serbatoio piuttosto potente che è controllato con NodeJS tramite Wi-Fi. Il robot stesso non è esattamente "piccola robotica" a 150 sterline, ma probabilmente potresti imparare un po 'dal codice sorgente. Ha un netbook a bordo che esegue un server web e parla con un Arduino. Puoi trovare il codice sorgente sulla sua pagina del progetto Github . Il controllo in tempo reale da un browser Web su un altro computer è sorprendentemente reattivo.



1

La programmazione di AR.Drone 2.0 con Javascript è super divertente. Ecco un esempio che fa decollare un drone, spostarsi, fare una capriola, quindi atterrare, tutto usando la libreria 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();
  });

Il post sul blog NodeBots - the Rise of JS Robotics parla dei vantaggi che javascript ha per la robotica, in particolare il modo naturale in cui gli oggetti e le azioni del mondo reale possono essere modellati come processi concatenabili e organizzati. Il codice di esempio sopra per animare un drone è molto simile all'utilizzo di jQuery per animare un elemento HTML:

$("#foo")
  .slideUp(300)
  .delay(800)
  .fadeIn(400);

Ho modificato la risposta per essere più specifico e aggiungere più contesto. Grazie per il feedback.
John Wiseman,

Grazie John, è un'ottima modifica, proprio il genere di cose che rende una risposta a prova di futuro.
Mark Booth

0

Esiste anche un progetto chiamato Espruino , che è un interprete JavaScript per i microcontrollori ARM a bassa potenza. È una riscrittura del progetto tiny-js , un piccolo interprete C ++ per Javascript.


0

Potrebbe essere utile cercare online progetti di robotica basati su JavaScript poiché la comunità di robotica basata su JavaScript è cresciuta rapidamente da quando è stata posta questa domanda. Ad esempio, il blogger dietro https://burningservos.com ha documentato i processi di costruzione di un robot a quattro zampe da zero e discute su più librerie javascript che il blogger ha valutato o utilizzato. C'è anche una sezione "hardware" in glitch (o anche su Adafruit e Hackster.io ) in cui le persone condividono i loro progetti di hacking hardware basati su javascript dove è possibile controllare le librerie che hanno usato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.