Programando robôs com JavaScript


39

Como alguém que passa a maior parte do tempo programando em JavaScript, qual é o melhor caminho para entrar na robótica pequena sem precisar se desviar muito do meu foco atual na linguagem?

Existem kits ou ferramentas de projeto que fazem uso da linguagem JavaScript que podem tornar o campo mais acessível para desenvolvedores como eu? Eu estaria interessado em ambientes virtuais onde todo o código é executado em uma simulação.


3
Você deve verificar esta publicação ... weblog.bocoup.com/javascript-arduino-programming-with-nodejs Ele discute uma implementação Js pura do protocolo usado para o Arduino. Coisas bem legais.
22730 Chris Gutierrez #

Gostaria de ver alguma implementação do nodejs em execução no robô. Pode-se controlar o robô pela Web usando websockets.
Senhor Loh.

Você não programa em JavaScript - escreve scripts (que são usados ​​em um navegador para manipulação do DOM pelo Cliente). Você pode programar em JAVA - que é completamente diferente. node.jstambém não é javascript. É uma biblioteca C que interpreta as chamadas AJAX como mini servidor e é usada para solicitações de alto volume - por exemplo, no ebay -. Você não precisa atualizar uma página em um item que está terminando porque o javascript sincroniza o preço e a hora do lance usando o nó js resposta extremamente rápida, reduzindo a sobrecarga de tráfego) Node.js é bom para arduino causa éC
Piotr Kula

Portanto, você programa o bot ce faz interface com ele usando o node.js - que usa inerentemente o JavaScript ajax para solicitação, mas também pode usar solicitações do servidor ou outro código inteligente que não esteja relacionado ao JavaScript.
Piotr Kula

O código do Arduino é a única maneira eficiente atualmente?
Huzo

Respostas:


22

Existem alguns projetos por aí que associam a plataforma Arduino ao mecanismo de execução javascript do Node.js. Dê uma olhada no Johnny-Five , que é uma biblioteca sobre o protocolo de controle remoto do Arduino Firmata ou node-reflecta , que é uma interface do Node.js. para o protocolo de controle remoto do Arduino Reflecta.

Eu construí pessoalmente um robô controlado pelo Node.js. , chamado RocketBot , que combina node-reflecta com node-joystick em cima de um Beaglebone e um Arduino, para que eu possa atestar que essa abordagem funciona bem.


12

Hmm, pergunta interessante! Pessoalmente, sugiro que você dê uma olhada na plataforma Arduino. Está programado em C, então a sintaxe será ... familiar, para um escritor de JavaScript. Na minha humilde opinião, saber como a sintaxe (enquanto loops, se / do que blocos, etc.) é definida é 70% da batalha, quando você estiver familiarizado com isso, poderá conectar e jogar. Você pode comprar um kit inicial por cerca de US $ 30 on-line com o pessoal do SparkFun.com ou adafruit.com, pode programá-lo em um PC, Mac ou Linux e vem pré-carregado com exemplos suficientes para facilitar sua entrada. o idioma rapidamente. Eu não estou dizendo que você só vai colocar algum código JavaScript nele e seguir o seu caminho, mas eu era um programador de JavaScript quando comecei com o Arduino, e achei muito fácil entender e executar. Boa sorte,

PS - você também deve estar familiarizado / confortável com a construção de circuitos eletrônicos (luzes, motores e similares), mas qualquer bom kit de introdução ao Arduino vale a pena começar, se você não tiver experiência.


3
PS - Uma pergunta boa para o nascente, local Robotics.SE recém-cunhadas, eu acho :)
Chris

11
Ótima resposta, @ Chris. Já ouvi falar da plataforma Arduino de outros desenvolvedores de JavaScript. Talvez seja o melhor remédio de gateway para um desenvolvedor que deseja ficar viciado.
21420 Sampson

11
Como um jovem desenvolvedor de JavaScript / web, acho sua pergunta super interessante. Como afirmado anteriormente, existem plataformas para o node.js e outras várias versões; no entanto, se você realmente se sentir confortável em JavaScript, poderá aprender facilmente qualquer outro idioma, o que eu recomendo. Além de expandir sua capacidade de entender a ciência fundamental da computação, também facilita o aprendizado de coisas novas.
OneChillDude

8

O Robot Operating System (ROS) oferece a capacidade de usar Javascript para controlar seus robôs. Especificamente, você vai querer olhar para Rosbridge . Você precisará usar o rosserial para interagir com o microcontrolador que controla seu robô.

Embora eu seja um grande fã de ROS, essa é uma maneira muito complicada de começar a explorar o campo da robótica IMHO. Você ficaria melhor servido para pegar um Arduino e aprender um pouco de C. O Arduino faz um ótimo trabalho de simplificar o processo e C não é um grande desvio do JS da perspectiva da sintaxe.


5

Geralmente, existem muitas maneiras de usar o node.js com uma plataforma, como esta para o RPi . Existem muito mais similares se você apenas procurá-las .

Outro interessante é o ArduGate , que permite que as páginas da web se comuniquem com o arduino via JS (embora provavelmente não seja exatamente o que você queria, pois ele não é compilado e carregado no arduino)

Embora eu realmente não veja o que há de errado em usar um idioma diferente. Eu mesmo escrevo principalmente em JS, mas me sinto perfeitamente confortável em programar um Arduino em C ++ (ele também permite C e Java, e se você trabalhar um pouco mais algumas linguagens ). Lembre-se, não estamos precisando de nada sofisticado para programar um robô - apenas ifs, fors, whiles, switches normais e os ocasionaisclass. Aprenda a sintaxe e pronto: :) A única coisa é que C / C ++ / Java são fortemente tipados (embora, se você estiver usando o RPi, o python seja fracamente tipado, mas exigente em um milhão de maneiras), então você pode ficar um pouco frustrado no começo quando precisar especificar tipos para tudo. Uma vantagem do uso de idiomas nativos é que é muito mais fácil encontrar APIs e código de exemplo na rede. Por exemplo, além do ArduGate (que está embutido e provavelmente não é o que você queria), não consigo encontrar nenhuma maneira de acessar a EEPROM - uma tarefa comum. Portanto, a menos que você queira seguir programas simples, é melhor usar os idiomas nativos.


2

Um amigo meu, na verdade, tem um robô tanque muito poderoso que é controlado com o NodeJS por wifi. O robô em si não é exatamente "robótico pequeno" a 150 libras, mas você provavelmente poderia aprender bastante com o código-fonte. Possui um netbook a bordo executando um servidor da web e conversando com um Arduino. Você pode encontrar o código fonte em sua página de projeto no Github . O controle em tempo real de um navegador da web em outro computador é surpreendentemente responsivo.



1

Programar o AR.Drone 2.0 com Javascript é super divertido. Aqui está um exemplo que faz um drone decolar, se movimentar, girar e pousar, todos usando a biblioteca 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();
  });

A publicação do blog NodeBots - o surgimento da JS Robotics fala sobre as vantagens que o javascript tem para a robótica, especificamente a maneira natural como objetos e ações do mundo real podem ser modelados como processos encadeados e eventos. O código de exemplo acima para animar um drone é muito semelhante ao uso do jQuery para animar um elemento HTML:

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

Editei a resposta para ser mais específico e adicionar mais contexto. Obrigado pelo feedback.
21413 John Wiseman

Obrigado John, é uma ótima edição, exatamente o tipo de coisa que dá uma resposta à prova de futuro.
Mark Booth

0

Há também um projeto chamado Espruino , que é um intérprete JavaScript para microcontroladores ARM de baixa potência. É uma reescrita do projeto tiny-js , um pequeno interpretador de C ++ para Javascript.


0

Pode ser útil procurar projetos de robótica baseados em javascript on-line, pois a comunidade de robótica baseada em javascript está crescendo rapidamente desde que essa pergunta foi feita. Por exemplo, o blogueiro por trás do https://burningservos.com documentou os processos de construção de um robô de quatro patas do zero e discutiu várias bibliotecas javascript que o blogueiro avaliou ou usou. Há também a seção "hardware" na falha (ou mesmo no Adafruit e no Hackster.io ), onde as pessoas compartilham seus projetos de hackers de hardware baseados em javascript, onde você pode conferir as bibliotecas que eles usaram.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.