Программирование роботов с помощью JavaScript


39

Как кто-то, кто тратит большую часть своего времени на программирование на JavaScript, каков наилучший путь к малой робототехнике без необходимости слишком сильно отклоняться от моей текущей языковой направленности?

Существуют ли какие-либо наборы проектов или инструменты, использующие язык JavaScript, которые могут сделать эту область более доступной для таких разработчиков, как я? Я бы даже заинтересовался виртуальными средами, где весь код выполняется в симуляции.


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

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

Вы не программируете на JavaScript - вы пишете скрипты (которые используются в браузере для манипулирования клиентом DOM). Вы можете программировать на JAVA - что совершенно другое. node.jsэто не javascript либо. Это библиотека C, которая интерпретирует вызовы AJAX как мини-сервер и используется для запросов большого объема - например, на ebay. Вам не нужно обновлять страницу на элементе, который заканчивается, потому что javascript синхронизирует цену и время назначения ставок, используя узел .js чрезвычайно быстрый отклик при одновременном снижении накладных расходов на трафик) node.js полезен для Arduino, потому что это такC
Петр Кула

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

Является ли код Arduino единственным эффективным способом в настоящее время?
Huzo

Ответы:


22

Существует несколько проектов, которые объединяют платформу Arduino с механизмом исполнения JavaScript Node.js. Взгляните на Johnny-Five , библиотеку поверх протокола удаленного управления Arduino Firmata или node-reflea , являющуюся интерфейсом Node.js для протокола удаленного управления Arduino Reflecta.

Я лично создал робота, контролируемого Node.js под названием RocketBot , который сочетает в себе узел-рефлекса с узлом-джойстиком на вершине Beaglebone и Arduino, так что я могу подтвердить, что этот подход работает хорошо.


12

Хм, интересный вопрос! Я бы лично предложил вам взглянуть на платформу Arduino. Он запрограммирован на C, поэтому синтаксис будет ... знакомым для автора JavaScript. По моему скромному мнению, знание того, как устроен синтаксис (циклы while, if / than блоки и т. Д.), Составляет 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

Robot Operating System (ROS) предлагает возможность использовать Javascript для управления своими роботами. В частности, вы хотите посмотреть на Росбридж . Затем вам потребуется использовать rosserial для взаимодействия с микроконтроллером, управляющим вашим роботом.

Хотя я большой поклонник ROS, это слишком сложный способ начать исследование области робототехники ИМХО. Вам лучше взять 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 через Wi-Fi. Сам робот не совсем «маленький робототехник» за 150 фунтов, но вы, вероятно, могли бы немного узнать из исходного кода. Он имеет нетбук на борту, работает веб-сервер и разговаривает с Arduino. Вы можете найти исходный код на его странице проекта Github . Управление в режиме реального времени из веб-браузера на другом компьютере удивительно отзывчиво.


2

Microsoft Robotics использует протокол, называемый протокол децентрализованного программного обеспечения (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 ) , где люди делятся своим яваскриптом на основе аппаратного взлом проектов , в которых вы можете проверить библиотеки , которые они использовали.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.