JavaScript ile Robot Programlama


39

Zamanlamasının çoğunu JavaScript'te geçiren biri olarak, şu anki dil odağımdan çok fazla sapmaya gerek kalmadan küçük robotiklere girmenin en iyi yolu nedir?

Alanını kendim gibi geliştiriciler için daha ulaşılabilir hale getirebilecek JavaScript dilini kullanan proje kitleri veya araçları var mı? Tüm kodların bir simülasyonda yürütüldüğü sanal ortamlar bile ilgimi çeker.


3
Bu yazıyı kontrol etmelisiniz ... weblog.bocoup.com/javascript-arduino-programming-with-nodejs Arduino için kullanılan protokolün saf bir Js uygulamasını anlatıyor . Oldukça havalı şeyler.
Chris Gutierrez

Robot üzerinde çalışan bazı düğüm uygulamalarını görmek istiyorum. Biri robotu sadece web yuvalarını kullanarak web üzerinden kontrol edebilir.
Lord Loh.

JavaScript'te programlamıyorsunuz - Senaryoları yazıyorsunuz (hangi bir tarayıcıda DOM'nin İstemci manipülasyonu için kullanılıyor) JAVA'da programlayabilirsiniz - bu tamamen farklıdır. node.jsBu da javascript değil. AJAX çağrılarını mini sunucu olarak yorumlayan ve yüksek hacimli istekler için kullanılan bir C kütüphanesidir - örneğin ebay'da - javascript teklif fiyatını ve saatini düğüm kullanarak senkronize ettiği için biten bir öğeyi yenilemenize gerek yoktur .js trafik yükünü azaltırken son derece hızlı yanıt) node.js arduino için iyidir çünkü buC
Piotr Kula

Bu nedenle, botu cve arayüzünü node.js kullanarak programlayın - kendiliğinden istek için JavaScript ajax'ı kullanın, ancak sunucu isteklerini veya yine de JavaScript ile ilgili olmayan diğer akıllı kodları da kullanabilirsiniz.
Piotr Kula

Arduino kodu şu anda tek etkili yol mu?
Huzo

Yanıtlar:


22

Arduino platformunu Node.js javascript yürütme motoruna dönüştüren birkaç proje var. Bir göz atın Johnny-Five Arduino Firmata uzaktan kumanda protokolü veya üstünde bir kütüphane, düğüm-REFLECTA Arduino Reflecta uzaktan kumanda protokolü için bir node.js arayüzüdür.

Şahsen , RocketBot adında bir Node.js kontrollü robot inşa ettim, node-reflecta ile Beaglebone ve Arduino üzerindeki node joystick'i birleştirdi, böylece bu yaklaşımın iyi sonuçlanabileceğini söyleyebilirim.


12

Hmm, ilginç bir soru! Şahsen, Arduino platformuna bir göz atmanızı öneririm. C dilinde programlanmıştır, bu yüzden sözdizimi bir JavaScript yazara aşina olacak. Alçakgönüllü görüşüme göre, sözdiziminin nasıl yapıldığını bilmek (döngüler, bloklar olsa da / olmasın, vb.) Savaşın% 70'idir, buna aşina olduktan sonra takıp oynayabilirsiniz. SparkFun.com veya adafruit.com'daki iyi arkadaşlardan çevrimiçi olarak yaklaşık 30 $ 'lık bir başlangıç ​​kiti alabilir, bir PC, Mac veya Linux makinesinde programlayabilir ve sizi kolaylaştırmak için önceden yüklenmiş olarak gelir. Dil hızlıca Sadece JavaScript kodunu yazıp yoluna devam edeceğini söylemiyorum, ama Arduino ile başladığımda bir JavaScript programcısıydım ve alıp çalıştırmayı oldukça kolay buldum. İyi şanslar,

PS - ayrıca elektronik devreler (ışıklar, motorlar ve benzerleri) oluşturmaya aşina olmalısınız / rahat olmalısınız, ancak tuzuna değecek herhangi bir Arduino tanıtım seti, herhangi bir deneyiminiz yoksa başlayacaktır.


3
PS - Yavru kuş, yeni basılmış Robotik için iyi bir soru.SE sitesi, sanırım :)
Chris

1
Harika cevap, @ Chris. Arduino platformunu diğer JavaScript geliştiricilerinden duydum. Belki de bu bağımlı olmak isteyen bir geliştirici için en iyi ağ geçidi ilacıdır.
Sampson

1
Genç bir JavaScript / web geliştiricisi olarak sorunuzu çok ilginç buluyorum. Daha önce belirtildiği gibi, node.js ve diğer çeşitli sürümler için platformlar mevcut, ancak JavaScript'te gerçekten rahat olursanız, gerçekten çok tavsiye edeceğim herhangi bir dili kolayca öğrenebilirsiniz. Sadece temel bilgisayar bilimlerini anlama yeteneğinizi genişletmekle kalmaz, aynı zamanda yeni şeyleri öğrenmeyi de kolaylaştırır.
OneChillDude

8

Robot İşletim Sistemi (ROS), robotlarınızı kontrol etmek için Javascript kullanma yeteneği sunar. Özellikle Rosbridge'ye bakmak isteyeceksin . Daha sonra robotunuzu kontrol eden mikrodenetleyici ile arabirim oluşturmak için rosserial kullanmanız gerekecektir .

ROS'un büyük bir hayranıyım, ancak bu robotik IMHO alanını keşfetmeye başlamanın aşırı karmaşık bir yoludur. Bir Arduino almak ve biraz C öğrenmek için daha iyi hizmet görürsünüz . Arduino, işlemi basitleştirmek için harika bir iş çıkarır ve C, JS'den sözdizimi açısından büyük bir sapma değildir.


5

Genellikle , node.js'yi RPI için olduğu gibi bir platformla kullanmanın birçok yolu vardır . Sadece onları ararsanız , çok daha benzerleri vardır .

Bir başka ilginç olan da, web sayfalarının arduino ile JS yoluyla iletişim kurmasına izin veren ArduGate'dir (muhtemelen, tam olarak istediğinizi tam olarak değil, çünkü derleme ve arduinoya yükleme yapmaz)

Yine de farklı bir dil kullanmanın yanlış olduğunu anlamıyorum. Öncelikle JS'de kendim yazıyorum, ancak C ++ 'da bir Arduino'yu programlamada kendimi çok rahat buluyorum (ayrıca C ve Java'ya da izin veriyor, ve eğer biraz çalışıp biraz daha fazla dilde çalışırsanız ). Unutma, bir robotu programlamak için hiçbir şeye ihtiyacımız yok - sadece normal ifs, fors, whiles switch, ve zaman zamanclass. Sözdizimini öğrenin ve gitmeniz iyi olur :) Tek şey, C / C ++ / Java'nın güçlü bir şekilde yazılmış olması (RPI kullanıyorsanız, python'un zayıf yazılmış ancak bir milyondan fazla şekilde seçici olması). Her şey için tür belirtmeniz gerektiğinde başlangıçta biraz hayal kırıklığı yaşayabilirsiniz. Yerel dilleri kullanmanın bir avantajı, API'leri ve net olarak örnek kodu bulmanın çok daha kolay olmasıdır. Örneğin, ArduGate dışında (içinde yerleşik olan ve muhtemelen istediğin gibi değil), EEPROM'a erişmenin hiçbir yolunu bulamıyorum - ortak bir görev. Dolayısıyla, basit programlara bağlı kalmak istemediğiniz sürece, anadilleri kullanmak daha iyidir.


2

Bir arkadaşım aslında wifi üzerinden NodeJS ile kontrol edilen oldukça güçlü bir tank robotuna sahip. Robotun kendisi tam olarak 150 pound'luk "küçük robotlar" değil, ama kaynak kodundan biraz öğrenebilirsin. Bir web sunucusu çalıştıran ve bir Arduino ile konuşurken onboard bir netbook var. Kaynak kodunu Github proje sayfasında bulabilirsiniz . Başka bir bilgisayardaki bir web tarayıcısından gerçek zamanlı kontrol şaşırtıcı bir şekilde tepki verir.


2

Microsoft Robotics adlı bir protokol kullanır Yerinden Yazılım Hizmetleri Protokolü (DSSP) ve özelliklerini yayınladı kimse herhangi bir dilde bunu uygulamaya izin veren bir lisans altında. DSSP protokolü mevcut web standartlarıyla tamamen uyumludur ve bence JavaScript ve NodeJS'de uygulamanın harika bir fikir olacağını düşünüyorum. Bu, düğüm uygulamanızın bugün mevcut olan herhangi bir DSS robotik servisi ile etkileşime girmesini mümkün kılabilir.


1

Programlama AR.Drone 2.0 Javascript ile süper eğlenceli. İşte bir insansız hava aracının kalkmasına, dolaştırmasına, çevirmesine, sonra iniş yapmasına ve bunların hepsini node-ar-drone kütüphanesini kullanarak yapan bir örnek :

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();
  });

Blog yazısı NodeBots - JS Robotics'in Yükselişi, javascript'in robotik için sahip olduğu avantajlardan bahseder, özellikle de gerçek dünyadaki nesnelerin ve eylemlerin zincirlenebilir, olaylı süreçler olarak modellenebilmesinin doğal yolu. Bir uçağı canlandırmak için yukarıdaki örnek kod, bir HTML öğesini canlandırmak için jQuery kullanmaya çok benziyor:

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

Daha spesifik olması ve daha fazla içerik eklemek için cevabı değiştirdim. Geri dönüşünüz için teşekkür ederiz.
John Wiseman

Teşekkürler John, bu harika bir düzenleme, geleceğe dönük bir cevap veren bir şey.
Mark Booth

0

Düşük güçlü ARM mikrodenetleyicileri için bir JavaScript tercümanı olan Espruino adlı bir proje de var . Javascript için küçük bir C ++ yorumcusu olan tiny-js projesinin yeniden yazılması .


0

Javascript tabanlı robot topluluğu bu soruyu sorduktan bu yana hızla büyüyor gibi javascript tabanlı robot projelerini çevrimiçi olarak aramakta yardımcı olabilir. Örneğin, https: //burningservos.com'un arkasındaki blogcu, dört ayaklı bir robotun sıfırdan inşa edilmesi ve blogger'ın değerlendirdiği veya kullandığı birden çok kütüphaneyi javascript ile tartışan süreçleri belgelemiştir. Ayrıca, insanların kullandıkları kütüphaneleri kontrol edebileceğiniz javascript tabanlı donanım korsanlığı projelerini paylaştığı aksaklıkta (hatta Adafruit ve Hackster.io'da ) "donanım" bölümü de bulunmaktadır .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.