Memprogram Robot dengan JavaScript


39

Sebagai seseorang yang menghabiskan sebagian besar waktunya untuk pemrograman dalam JavaScript, apa rute terbaik untuk masuk ke robot kecil tanpa perlu menyimpang terlalu banyak dari fokus bahasa saya saat ini?

Apakah ada kit proyek atau alat yang menggunakan bahasa JavaScript yang mungkin membuat bidang lebih mudah didekati oleh pengembang seperti saya? Saya bahkan akan tertarik pada lingkungan virtual di mana semua kode dieksekusi dalam simulasi.


3
Anda harus memeriksa posting ini ... weblog.bocoup.com/javascript-arduino-programming-with-nodejs Ini membahas implementasi Js murni dari protokol yang digunakan untuk Arduino. Hal yang cukup keren.
Chris Gutierrez

Saya ingin melihat beberapa implementasi nodejs berjalan pada robot. Seseorang mungkin hanya mengendalikan robot melalui web menggunakan soket web.
Tuan Loh.

Anda tidak memprogram dalam JavaScript - Anda menulis skrip (yang digunakan pada browser untuk manipulasi DOM oleh Klien) Anda dapat memprogram di JAWA - yang sama sekali berbeda. node.jsitu juga tidak javascript. Ini adalah pustaka C yang menginterpretasikan panggilan AJAX sebagai server mini dan digunakan untuk permintaan volume tinggi - misalnya di ebay - Anda tidak perlu me-refresh halaman pada item yang berakhir karena javascript mensinkronkan harga penawaran dan waktu dengan menggunakan node .js respons yang sangat cepat sekaligus mengurangi overhead lalu lintas) node.js baik untuk arduino karena ituC
Piotr Kula

Jadi, Anda akan memprogram bot cdan antarmuka ke dalamnya menggunakan node.js - yang secara inheren menggunakan JavaScript ajax untuk permintaan tetapi Anda juga dapat menggunakan permintaan server atau kode pintar lainnya yang tidak terkait dengan JavaScript.
Piotr Kula

Apakah kode Arduino satu-satunya cara yang efisien saat ini?
Huzo

Jawaban:


22

Ada beberapa proyek di luar sana yang menggabungkan platform Arduino ke mesin eksekusi javascript Node.js. Melihat Johnny-Five , yang merupakan pustaka di atas protokol kendali jarak jauh Arduino Firmata atau node-reflecta , yang merupakan antarmuka Node.js untuk protokol kendali jarak jauh Arduino Reflecta.

Saya pribadi membuat robot yang dikendalikan Node.js yang disebut RocketBot , yang menggabungkan node-reflecta dengan node-joystick di atas Beaglebone dan Arduino sehingga saya bisa membuktikan bahwa pendekatan ini berfungsi dengan baik.


12

Hmm, pertanyaan menarik! Saya pribadi menyarankan agar Anda melihat pada platform Arduino. Ini diprogram dalam C, jadi sintaksnya akan menjadi ... familiar, untuk seorang penulis JavaScript. Menurut pendapat saya yang sederhana, mengetahui bagaimana sintaksis (saat loop, jika / daripada blok, dll) diletakkan adalah 70% dari pertempuran, setelah Anda terbiasa dengan itu, Anda bisa pasang dan mainkan. Anda dapat mengambil starter kit dengan harga sekitar $ 30 online dari orang-orang baik di SparkFun.com atau adafruit.com, Anda dapat memprogramnya di PC, mesin Mac atau Linux, dan sudah dimuat sebelumnya dengan cukup contoh untuk memudahkan Anda masuk bahasa dengan cepat. Saya tidak mengatakan bahwa Anda hanya akan memasukkan beberapa kode JavaScript ke dalamnya dan berada di jalan Anda, tetapi saya adalah seorang programmer JavaScript ketika saya mulai dengan Arduino, dan saya merasa cukup mudah untuk mengambil dan menjalankannya. Semoga berhasil,

PS - Anda juga harus terbiasa / nyaman dengan membangun sirkuit elektronik (lampu, motor dan sejenisnya), tetapi setiap kit pengantar Arduino yang baik bernilai garam akan membantu Anda memulai jika Anda tidak memiliki pengalaman.


3
PS - Pertanyaan yang bagus untuk situs Robotics.SE yang baru dan baru dicetak, saya rasa :)
Chris

1
Jawaban yang bagus, @ Chris. Saya pernah mendengar tentang platform Arduino dari beberapa pengembang JavaScript lainnya. Mungkin itulah obat gerbang terbaik bagi pengembang yang ingin ketagihan.
Sampson

1
Sebagai pengembang muda JavaScript / web, saya menemukan pertanyaan Anda sangat menarik. Seperti yang dinyatakan sebelumnya ada platform untuk node.js dan berbagai versi lainnya, namun jika Anda benar-benar nyaman dalam JavaScript, Anda dapat dengan mudah mempelajari bahasa lain, yang sangat saya sarankan. Tidak hanya memperluas kemampuan Anda untuk memahami ilmu komputer yang mendasar, tetapi juga membuat belajar hal-hal baru lebih mudah.
OneChillDude

8

Sistem Operasi Robot (ROS) menawarkan kemampuan untuk menggunakan Javascript untuk mengontrol robot Anda. Khususnya Anda akan ingin melihat rosbridge . Anda kemudian perlu menggunakan rosserial untuk berinteraksi dengan mikrokontroler yang mengendalikan robot Anda.

Walaupun saya penggemar berat ROS, ini adalah cara yang terlalu rumit untuk mulai menjelajahi bidang robotika IMHO. Anda akan lebih baik dilayani untuk mengambil Arduino dan belajar sedikit C. Arduino melakukan pekerjaan yang baik untuk membuat proses sederhana dan C bukan penyimpangan besar dari JS dari perspektif sintaksis.


5

Secara umum ada banyak cara untuk menggunakan node.js dengan platform, seperti ini untuk RPi . Ada banyak yang lebih mirip jika Anda hanya mencari mereka .

Yang menarik lainnya adalah ArduGate , yang memungkinkan halaman web berkomunikasi dengan Arduino melalui JS (meskipun mungkin tidak persis apa yang Anda inginkan karena tidak dikompilasi dan dimuat ke Arduino)

Meskipun saya benar-benar tidak melihat apa yang salah dengan menggunakan bahasa yang berbeda. Saya sendiri menulis terutama dalam JS, tetapi saya menemukan diri saya benar-benar nyaman memprogram Arduino di C ++ (ini juga memungkinkan C dan Java, dan jika Anda memasukkan sedikit pekerjaan, cukup banyak bahasa lagi ). Ingat, kita tidak membutuhkan sesuatu yang mewah untuk pemrograman robot - hanya ifs normal , fors, whiles,switch es, dan sesekaliclass. Pelajari sintaksnya, dan Anda baik-baik saja :) Satu-satunya hal adalah C / C ++ / Java sangat diketik (meskipun jika Anda menggunakan RPi, python diketik dengan lemah tetapi pilih-pilih dalam jutaan cara lainnya), jadi Anda mungkin mendapatkan sedikit frustrasi di awal ketika Anda harus menentukan tipe untuk semuanya. Salah satu keuntungan menggunakan bahasa asli adalah bahwa lebih mudah untuk menemukan API dan contoh kode di internet. Misalnya, selain dari ArduGate (yang sudah ada di dalamnya dan mungkin bukan yang Anda inginkan), saya tidak dapat menemukan cara untuk mengakses EEPROM - tugas bersama. Jadi, kecuali Anda ingin tetap menggunakan program sederhana, lebih baik menggunakan bahasa asli.


2

Seorang teman saya sebenarnya memiliki robot tangki yang cukup kuat yang dikendalikan dengan NodeJS melalui wifi. Robot itu sendiri sebenarnya bukan "robot kecil" dengan berat 150 pound, tetapi Anda mungkin bisa belajar sedikit dari kode sumber. Ini memiliki netbook onboard, menjalankan server web dan berbicara dengan Arduino. Anda dapat menemukan kode sumber di halaman proyek Github-nya . Kontrol waktu nyata dari peramban web di komputer lain secara mengejutkan responsif.


2

Microsoft Robotics menggunakan protokol yang disebut Decentralized Software Services Protocol (DSSP) dan mereka merilis spesifikasi di bawah lisensi yang memungkinkan siapa pun untuk mengimplementasikannya dalam bahasa apa pun. Protokol DSSP benar-benar kompatibel dengan standar web saat ini dan saya pikir itu akan menjadi ide bagus untuk mengimplementasikannya dalam JavaScript dan NodeJS. Itu dapat memungkinkan aplikasi simpul Anda untuk berinteraksi dengan layanan robotika DSS apa pun yang tersedia saat ini.


1

Memprogram AR.Drone 2.0 dengan Javascript sangat menyenangkan. Berikut adalah contoh yang membuat drone lepas landas, bergerak, melakukan flip, lalu mendarat, semua menggunakan perpustakaan 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();
  });

Posting blog NodeBots - Bangkitnya JS Robotics berbicara tentang kelebihan yang dimiliki javascript untuk robotika, khususnya cara alami bahwa objek dan tindakan dunia nyata dapat dimodelkan sebagai proses rantai yang dapat diprogram dan dipicu. Contoh kode di atas untuk menghidupkan drone terlihat sangat mirip dengan menggunakan jQuery untuk menghidupkan elemen HTML:

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

Saya telah mengedit jawaban untuk lebih spesifik dan menambahkan lebih banyak konteks. Terima kasih untuk umpan baliknya.
John Wiseman

Terima kasih John, itu hasil edit yang bagus, hanya hal yang membuat jawaban yang tahan masa depan.
Mark Booth

0

Ada juga proyek yang disebut Espruino , yang merupakan penerjemah JavaScript untuk mikrokontroler ARM berdaya rendah. Ini adalah penulisan ulang proyek tiny-js , sebuah penerjemah C ++ kecil untuk Javascript.


0

Mungkin bermanfaat untuk mencari proyek robotika berbasis javascript online karena komunitas robotika berbasis javascript telah berkembang pesat sejak pertanyaan ini diajukan. Sebagai contoh, blogger di belakang https://burningservos.com mendokumentasikan proses pembuatan robot berkaki empat dari awal dan membahas beberapa perpustakaan javascript yang dievaluasi atau digunakan blogger. Ada juga bagian "perangkat keras" dalam glitch (atau bahkan di Adafruit dan Hackster.io ) di mana orang berbagi proyek peretasan perangkat keras berbasis javascript di mana Anda dapat memeriksa perpustakaan yang mereka gunakan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.