Програмування роботів за допомогою JavaScript


39

Як хтось, хто більшу частину свого часу витрачає на програмування в JavaScript, який найкращий шлях для того, щоб потрапити на малу робототехніку, не потрібно занадто сильно відхилятися від моєї поточної мовної уваги?

Чи є набори проектів чи інструменти, які використовують мову JavaScript, яка може зробити поле більш доступним для таких розробників, як я? Мені навіть були б цікаві віртуальні середовища, де весь код виконується в симуляції.


3
Ви повинні замовити цю публікацію ... weblog.bocoup.com/javascript-arduino-programming-with-nodejs У ньому обговорюється чиста реалізація Js протоколу, який використовується для Arduino. Досить класні речі.
Кріс Гутьєрес

Мені хотілося б, щоб на роботі працювала реалізація nodejs. Можна просто керувати роботом над Інтернетом, використовуючи веб-розетки.
Лорд Лох.

Ви не програмуєте в JavaScript - Ви пишете сценарії (які використовуються в браузері для управління клієнтом DOM). Ви можете програмувати в JAVA - що зовсім інше. node.jsце не JavaScript. Це бібліотека С, що інтерпретує дзвінки AJAX як міні-сервер і використовується для запитів великих обсягів - наприклад, на ebay. Не потрібно оновлювати сторінку на елементі, який закінчується, оскільки javascript синхронізує ціну та час торгів за допомогою вузла .js надзвичайно швидка реакція при зменшенні накладних витрат на трафік) node.js хороший для ардуїно, тому що цеC
Piotr Kula

Таким чином, ви би запрограмували бота cі інтерфейсували з ним за допомогою node.js - який по суті використовує JavaScript ajax для запиту, але ви також можете використовувати запити сервера або інший розумний код, який так чи інакше не пов'язаний з JavaScript.
Пьотр Кула

Чи єдиний в даний час метод Arduino?
Хузо

Відповіді:


22

Є кілька проектів, які підключають платформу Arduino до механізму виконання JavaScript Node.js. Погляньте на Джонні-П'ять , що є бібліотекою на вершині протоколу дистанційного керування Arduino Firmata або вузла-reflecta , що є інтерфейсом Node.js для протоколу дистанційного керування Arduino Reflecta.

Я особисто створив керованого роботом Node.js під назвою RocketBot , який поєднує вузол-рефлекта з вузлом-джойстиком поверх Біглбона та Ардуїно, тому я можу засвідчити, що цей підхід працює добре.


12

Хм, цікаве запитання! Я особисто пропоную вам поглянути на платформу Arduino. Він запрограмований на C, тож синтаксис буде ... знайомим письменнику JavaScript. На мою скромну думку, знаючи, як викладається синтаксис (тоді як цикли, якщо / ніж блоки тощо), це 70% битви, як тільки ви ознайомитесь з цим, ви зможете підключити та грати. Ви можете забрати стартовий набір близько 30 доларів в Інтернеті від хороших людей на SparkFun.com або adafruit.com, ви можете запрограмувати його на ПК, Mac чи Linux машині, і він попередньо завантажений достатньою кількістю прикладів, щоб полегшити вам мова швидко. Я не кажу, що ти просто впустиш у нього якийсь код JavaScript і будеш на своєму шляху, але я був програмістом JavaScript, коли я почав працювати з Arduino, і мені було досить просто підібрати і працювати з ним. Удачі,

PS - Ви також повинні бути знайомі / зручні з побудовою електронних мікросхем (ліхтарі, двигуни тощо), але будь-який хороший набір для введення Arduino, вартий його солі, розпочне роботу, якщо у вас немає досвіду.


3
PS - Хороший питання для новоспеченого, нещодавно викарбуваного сайту Robotics.SE, я думаю :)
Chris

1
Чудова відповідь, @Chris. Я чув про платформу Arduino від деяких інших розробників JavaScript. Можливо, це найкращий лікарський препарат для розробника, який хоче підключитися.
Сампсон

1
Як молодий розробник JavaScript / веб, я вважаю ваше запитання дуже цікавим. Як зазначалося раніше, є платформи для node.js та інших різних версій, однак, якщо вам дуже зручно в JavaScript, ви можете дуже легко вивчити будь-яку іншу мову, яку я б дуже рекомендував. Це не тільки розширює вашу здатність розуміти фундаментальні інформатики, але й полегшує вивчення нових речей.
OneChillDude

8

Робоча операційна система (ROS) пропонує можливість використовувати Javascript для управління вашими роботами. Зокрема, ви захочете подивитися на Росбрідж . Потім вам потрібно буде використовувати розсериал для взаємодії з мікроконтролером, який управляє вашим роботом.

Хоча я є великим шанувальником ROS, це надто складний спосіб почати вивчення галузі робототехніки IMHO. Вам краще послужити, щоб забрати Arduino і вивчити трохи C. Arduino робить велику роботу, щоб зробити процес простим, і C - це не велике відхилення від JS від синтаксичного погляду.


5

Як правило, існує багато способів використання node.js з платформою, як цей для RPi . Є набагато більше подібних, якщо ви просто шукаєте їх .

Ще один цікавий - ArduGate , який дозволяє веб-сторінкам спілкуватися з arduino через JS (хоча, мабуть, не саме те, що ви хотіли, оскільки він не компілюється та не завантажується в arduino)

Хоча я справді не бачу, що поганого у використанні іншої мови. Я сам пишу в основному на JS, але мені здається, що я дуже комфортно програмувати Arduino на C ++ (це також дозволяє C та Java, а якщо ви вкладете трохи роботи, ще трохи мов ). Пам'ятайте, що нам не потрібно нічого фантазії для програмування робота - просто звичайні ifs, fors, whiles, switches та випадковіclass. Вивчіть синтаксис, і вам добре піти :) Єдине, що C / C ++ / Java сильно набрані (хоча якщо ви використовуєте RPi, python набраний слабко, але вибагливий на мільйон більше способів), так ви можете отримати трохи розчарування на початку, коли вам доведеться вказувати типи для всього. Однією з переваг використання рідних мов є те, що набагато простіше знайти API та приклад коду в мережі. Наприклад, окрім ArduGate (у якого він вбудований і, мабуть, не те, що ви хотіли), я не можу знайти жодного способу отримати доступ до EEPROM - поширене завдання. Тож, якщо ви не хочете дотримуватися простих програм, просто краще використовувати рідні мови.


2

Мій друг насправді має досить потужного танкового робота, який керується NodeJS через wifi. Сам робот не зовсім "мала робототехніка" на 150 фунтів, але ви, мабуть, могли навчитися трохи з вихідного коду. На ньому є нетбук, який працює на веб-сервері та спілкується з Arduino. Ви можете знайти вихідний код на його сторінці проекту Github . Контроль у режимі реального часу з веб-браузера на іншому комп’ютері дивовижно реагує.


2

Microsoft Robotics використовує протокол під назвою Decentralized Software Services Protocol (DSSP), і вони випустили специфікації за ліцензією, що дозволяє будь-кому реалізувати його будь-якою мовою. Протокол DSSP повністю сумісний з сучасними веб-стандартами, і я думаю, що було б чудовою ідеєю реалізувати його в JavaScript та NodeJS. Це може зробити вашу програму вузла взаємодією з будь-якими послугами робототехніки DSS, доступними сьогодні.


1

Програмування AR.Drone 2.0 за допомогою Javascript - дуже цікаво. Ось приклад, який змушує безпілотника злітати, переміщатися, робити поворот, а потім приземлятися, використовуючи бібліотеку 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();
  });

Повідомлення в блозі NodeBots - Rise of JS Robotics розповідає про переваги, які JavaScript має для робототехніки, зокрема про природний спосіб об'єктів і дій реального світу, які можна моделювати як прийнятні, рівномірні процеси. Наведений вище приклад коду для анімації дрона виглядає дуже схожим на використання jQuery для анімації елемента HTML:

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

Я відредагував відповідь, щоб бути більш конкретним і додати більше контексту. Дякуємо за відгук.
Джон Вісман

Дякую, Джон, це чудова редакція, просто така річ, яка дає відповідь на майбутнє.
Марк Бут

0

Існує також проект під назвою Espruino , який є інтерпретатором JavaScript для мікроконтролерів ARM малої потужності. Це перепис проекту tiny-js , невеликий інтерпретатор C ++ для Javascript.


0

Можливо, буде корисно шукати проекти робототехніки на основі javascript в Інтернеті, оскільки спільнота робототехніки, що базується на JavaScript, швидко зростає з того часу, як було задано це питання. Наприклад, блогер за https://burningservos.com задокументував процеси побудови чотириногого робота з нуля та обговорив декілька бібліотек javascript, який блогер оцінював або використовував. Також у глюк (або навіть на Adafruit та Hackster.io ) є розділ "апаратний", де люди діляться своїми проектами злому обладнання на базі JavaScript, де ви можете перевірити бібліотеки, які вони використовували.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.