.NET Fest: полная программа конференции на сайте. Присоединяйся к самому большому .NET ивенту
×Закрыть

Як щодо Raspberry Pi + node.js?

Всем привет.

Хочу воплотить в жизнь один проект, о котором думаю уже давно, но у меня много сомнений, поэтому нужна Ваша помощь.

2 года учу/работаю с JavaScript, и не против немного влезть в embedded.

Цель проекта — подружить Raspberry Pi с node.js и создать мини-робота с возможностью движения, распознавания объектов, логотипов и лиц.

А именно:
1. Сделать простой корпус и прикрутить колесика, чтобы обеспечить движение. Node.js модули для контроля колес уже нашел.
2. Камера — для фото / видео в реал-тайм режиме.
3. Синтез голоса (опционально).

функционал:
1. «Умная» навигация по ровным поверхностям
2. Отправка фото / видео на remote server для обработки с помощью Google Visual API.

В результате должен выйти робот, который ездит по квартире, распознает объекты, логотипы, надписи и лица (google visual api), и, по возможности, взаимодействует с пользователем с помощью синтеза голоса.

Вероятный стек технологий — node.js (control-server), WebSockets, React.js — для веб-клиента + ReactNative для mobile-клиента.

Raspberry-компоненты — самодельный корпус, колеса, камера, wifi-адаптер, устройство audio-вывода.

Так вот, хотел бы услышать Ваше мнение, реально такое будет сделать вообще. Если да — то какой стек выбрать, какой функционал, что читать / учить и тд.

Сам опыта с таким не был, поскольку еще школьник и университетских основ электроники не проходил. В руках — энтузиазм, желание, немного денег, и, надеюсь, Ваши советы. Возможно кому-то приходилось сталкиваться с подобными проектами. Буду рад помощи.

LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

...есть у меня в проэкте Qt диалог, который отображает WebView с капчей юзеру. Изначально был QML (JavaScript v8 двиг). Не смог я из него HttpOnly кукисы достать ...переписал на родной C++ WebView компонент ...визуально, на i7 проце оно в 2 (два, Карл!) раза быстрее стало грузиться-открывать-реагировать ...

Не извращайтесь. Если сильно хочется интерпретаторов — Lua.

> NASA Uses Node.js in Space Suits — Director of Software Engineering Confirms
> news.ycombinator.com/item?id=11928477

— Хьюстон, у нас проблема
— Какая?
— Undefined is not a function

Если тебе хочется делать робота, а не париться с низкоуровневыми костылями и потом забить на проект, советую взять борду/минипк/ноут на базе x64, посадить на платформу и радоваться жизни. И когда захочется подключить CV на базе любой камеры или RGBD все будет легко и просто.

Проверено на личном опыте :D
realimba.16mb.com/img/proj/robo-v1-1.jpg

для робота можна купити колісну платформу. або гусеничну. питання чи за допомогою node.js можна керувати GPIO

GPIO керується всім що має доступ до консолі, рахуй якщо можеш дьоргнути баш скрипт, маєш доступ до gpio

Боюсь, что робот на JS будет будет внезапно путать право и лево, и зависать в непредвиденные момент и время от времени у него будут отваливаться колеса и вырастать гусеницы.

Хм.. гусениці.. Міні-танк — теж класно!

То є аналогові тре ще одного щоб працював на node.js.

JavaScript
embedded

Дожили.

Запускал и ноду и веб сервер на джаве и питон веб сервер, работает ок.
Был проект на рпи — хексапод, управление голосом, распознавание объекта и слежение за ним(сделали очень просто — находим объект указаного цвета и поворачиваем камеру за ним, если скрылся из поля зрения двигаемся к последней точке, где был объект), ходьба при помощи серво приводов. В основном использовали питон (ибо очень много готовых решений уже есть), все питоновское — демоны, веб морда — на джаве.
С вебкамерой всегда были задержки, от 200-300 мс до нескольких секунд, улучшить этот показать увы, не вышло, это просто стрим в лайв режиме, а если и распознавание прикрутить — будет хуже. :(
Для работы использовали ардуины + рпи. Ардуины отвечали за серво приводы, а рпи отправляла команды управления. Так же использовали гироскоп и акселерометр для выравнивания робота относительно горизонта. Для голосового управления использовали юсб звуковую карту, подключили самодельный микрофон (опять же, для экономии места), робот реагировал на команды go, stop, turn <direction>, say <phrase>.
Проект заработал, но робот очень медленно перемещался, очень.

Если интересно:
Корпус, распечатанный на 3д принтере:
pp.vk.me/...383/4df7a/Z8zyFOdFtkE.jpg
В сборке, но без рпи:
pp.vk.me/...383/4df5f/WtZ1sPMkpVw.jpg
Более новых фотографий что-то найти не могу, но в финальной версии использовали рпи камеру, а не обычную юсб (ибо меньше весит).
Видео тестирования(не финальная версия):
new.vk.com/...ash=cb998fc8678af4c1&hd=2 — слежение за объектом
new.vk.com/...ash=b9977087bd492da6&hd=2 — балансировка

Если пинов рпи хватит, то можно запилить такое и при помощи одной рпи.
Видел, но не использовал либу из нпма для контрола пинов рпи.

можно подробнее за распознавание на RP , какими средствами распознавали и что распознавали? либо ограничились детекторами?

python + openCV
Детектили мячик определенного цвета, следили за ним(поворачивали камеру), как только пропадал из виду — начинали движение к последней точке, где он был замечен, там осматривались и в случае нахождения мячика — двигались непосредственно к нему.

2 года учу/работаю с JavaScript, и не против немного влезть в embedded.
, в embedded краще «влізати» з С/С++.

JavaScript — для embedded це те саме що С для веб, можна, але не треба....

Raspberry может не потянуть это всё.

Тогда либо передавать это всё на домашний ПК, где вычислительных ресурсов побольше, либо брать изначально нечто более мощное.

Я для себя взял odroid xu4 и eMMC на 16Гб к нему, вместо SD карты.

Заменил штатный шумный кулер на радиатор для северного моста с низкооборотным кулером (довольно габаритный, но при этом лучше охлаждает).

В целом очень доволен, вышло всё порядка 120$ но зато существенно мощнее Raspberry.

Дякую за поради.
Планую переносити всі операції на окремий сервак/пк.
Від Raspberry мені потрібні лише рух, відео та аудіо-вивід. Думаю це він потяне.

Нет, только MISRA C, только хардкор.

ну вам еще наверняка понадобится доступ к gpio для шима колес или вертелки камеры, могу порекомендовать wiringPi библиотеку. разработчик делал врапер для пайтона, но я юзаю ее в чистом виде, через свою обертку (php, java). так что стек пофиг какой, который знаете тот и берите, если бинарей на что то нету то из сырцов собирается почти все. сейчас играюсь с оранж пи, сок там сам по себе горячий, но когда работаю с камерой(ffmpg, motion) камень греется сильно, малинка похолоднее будет но отожрет процесора норм так что готовтесь к тормозам. не совсем понял зачем вам мобильный клиент.зачем устройство аудивыхода?(я так понимаю вы внешнюю звуковую хотите) я к юзал гугловый tts, работает норм, хотя видел статью обзор еа 8-10 спич движков, со своими плюсами минусами, онлайновые офлайновые, погуглите полезно будет.

Как я понимаю под Google Visual API имеется в виду «Vision API». Наталкивался в интернетах на похожие проекты, думаю полезно будет их изучить:

— www.youtube.com/watch?v=eve8DkkVdhI
— medium.com/...n-8f28501937b0#.8cawwz3fq

Если выбираете node.js, то советую попробовать вот этот фреймворк: cylonjs.com (установка на малинку — cylonjs.com/.../platforms/raspberry-pi/. Огромное количество расширений под различные модули, что дает возможность быстрее запилить само управление роботом.

Для ремоут сервера советую посмотреть на уже существующие open-source IoT хабы. На некоторых может быть намного больше фич чем необходимо для небольшого проекта и порог вхождения может быть достаточно высоким, но при выборе простого и понятного инструмента это может упростить много задач.

Примеры:
— www.scriptr.io
— devicehive.com
— flowthings.io
— www.kaaproject.org

cylonjs — те, що треба. Дякую.
Р.S Робот із відео- саме те, що я й хотів запиляти.

Пробовал запускать Node.js и даже LAMP. Простые приложения первая версия платы тянет без проблем. Но вот с распознаванием образов могут быть проблемы, производительность у Raspberry Pi так себе.

Розпізнавання перенесу на окремий сервак.

Пробовал на нем запустить node.js, как то не пошло. Очень дохлая железка. Лучше посмотрите на cubieboard всякие. Сам сейчас играюсь с cubietruck.

Подписаться на комментарии