जावास्क्रिप्ट के साथ प्रोग्रामिंग रोबोट


39

किसी ऐसे व्यक्ति के रूप में जो अपना अधिकांश समय जावास्क्रिप्ट में प्रोग्रामिंग में बिता रहा है, मेरे वर्तमान भाषा फ़ोकस से बहुत अधिक विचलन करने की आवश्यकता के बिना छोटे-रोबोटिक्स में आने का सबसे अच्छा मार्ग क्या है?

क्या कोई परियोजना किट या उपकरण हैं जो जावास्क्रिप्ट भाषा का उपयोग करते हैं जो कि अपने जैसे डेवलपर्स के लिए क्षेत्र को अधिक स्वीकार्य बना सकते हैं? मुझे ऐसे आभासी वातावरण में भी दिलचस्पी होगी जहां एक सिमुलेशन में सभी कोड निष्पादित किए जाते हैं।


3
आपको इस पोस्ट को जांचना चाहिए ... weblog.bocoup.com/javascript-arduino-programming-with-nodejs यह Arduino के लिए उपयोग किए जाने वाले प्रोटोकॉल के शुद्ध जेएस कार्यान्वयन पर चर्चा करता है। बहुत अच्छा सामान।
क्रिस गुटियारेज़

मैं रोबोट पर चलने वाले कुछ नोडज कार्यान्वयन देखना चाहता हूं। एक वेबसोकेट का उपयोग करके वेब पर रोबोट को नियंत्रित कर सकता है।
भगवान लोह।

आप जावास्क्रिप्ट में प्रोग्राम नहीं करते हैं - आप स्क्रिप्ट लिखते हैं (जो डोम के क्लाइंट हेरफेर के लिए एक ब्राउज़र पर उपयोग की जाती है) आप जेएवीए में प्रोग्राम कर सकते हैं - जो पूरी तरह से अलग है। node.jsयह जावास्क्रिप्ट भी नहीं है। यह एक सी लाइब्रेरी है जो AJAX कॉल को मिनी सर्वर के रूप में व्याख्यायित करती है और इसका उपयोग उच्च मात्रा के अनुरोधों के लिए किया जाता है- उदाहरण के लिए eBay- आपको समाप्त होने वाले आइटम पर एक पृष्ठ को ताज़ा करने की आवश्यकता नहीं है क्योंकि जावास्क्रिप्ट बोली नोड का उपयोग करके बोली मूल्य और समय को सिंक्रनाइज़ करता है .जेड ट्रैफिक को कम करते हुए .js बहुत ही त्वरित प्रतिक्रिया) नोड.जेएस arduino के लिए अच्छा है क्योंकि यह हैC
Piotr Kula

इसलिए आप बॉट को cइन्टरफेस और इंटरफेस में नोड.जेएस का उपयोग करके प्रोग्राम करेंगे - जो स्वाभाविक रूप से अनुरोध के लिए जावास्क्रिप्ट अजाक्स का उपयोग करता है, लेकिन आप सर्वर अनुरोध या अन्य चतुर कोड का उपयोग भी कर सकते हैं जो कि वैसे भी जावास्क्रिप्ट से संबंधित नहीं है।
पायोटर कुला

क्या वर्तमान में Arduino कोड एकमात्र कुशल तरीका है?
हुजो

जवाबों:


22

वहाँ परियोजनाओं की एक जोड़ी है कि Arduino मंच Node.js जावास्क्रिप्ट निष्पादन इंजन के लिए दोस्त हैं। जॉनी-फाइव पर एक नज़र डालें , जो Arduino Firmata रिमोट कंट्रोल प्रोटोकॉल या नोड-रिफ्लेक्टा के शीर्ष पर एक लाइब्रेरी है , जो Arduino Reflecta रिमोट कंट्रोल प्रोटोकॉल के लिए Node.js इंटरफ़ेस है।

मैंने व्यक्तिगत रूप से RocketBot नामक एक Node.js नियंत्रित रोबोट का निर्माण किया है , जो एक बीगलबोन और एक Arduino के शीर्ष पर नोड-जॉयस्टिक के साथ नोड-रिफ्लेक्टा को जोड़ती है ताकि मैं इस दृष्टिकोण को अच्छी तरह से काम कर सकूं।


12

हम्म, दिलचस्प सवाल! मैं व्यक्तिगत रूप से सुझाव दूंगा कि आप Arduino प्लेटफ़ॉर्म पर एक नज़र डालें। यह C में क्रमादेशित है, इसलिए वाक्य रचना एक जावास्क्रिप्ट लेखक के लिए ... परिचित, होने जा रही है। मेरी विनम्र राय में, यह जानकर कि वाक्य रचना (जबकि लूप, यदि / ब्लॉक से, आदि) रखी गई है, 70% लड़ाई है, एक बार जब आप उससे परिचित हो जाते हैं, तो आप प्लग एंड प्ले कर सकते हैं। आप SparkFun.com या adafruit.com पर अच्छे लोगों से ऑनलाइन लगभग $ 30 के लिए एक स्टार्टर किट ले सकते हैं, आप इसे पीसी, मैक या लिनक्स मशीन पर प्रोग्राम कर सकते हैं, और यह आपको आराम करने के लिए पर्याप्त उदाहरणों के साथ प्री-लोडेड आता है। जल्दी से भाषा। मैं यह नहीं कह रहा हूं कि आप कुछ जावास्क्रिप्ट कोड को इसमें छोड़ देंगे और अपने रास्ते पर रहेंगे, लेकिन जब मैं Arduino के साथ शुरू हुआ तो मैं एक जावास्क्रिप्ट प्रोग्रामर था, और मुझे इसे लेने और चलाने में काफी आसान लगा। सौभाग्य,

पुनश्च - आपको इलेक्ट्रॉनिक सर्किट (लाइट, मोटर्स और लाइक) के निर्माण के साथ परिचित / आरामदायक होना चाहिए, लेकिन इसके नमक के लायक कोई भी अच्छा Arduino परिचय किट आपको शुरू हो जाएगा यदि आपके पास कोई अनुभव नहीं है।


3
पुनश्च - नवविवाहित रोबोटिक्स के लिए एक अच्छा सवाल है। साइट, मुझे लगता है :)
क्रिस

1
शानदार जवाब, @ क्रिस। मैंने कुछ अन्य जावास्क्रिप्ट डेवलपर्स से Arduino प्लेटफ़ॉर्म के बारे में सुना है। शायद यह एक डेवलपर के लिए सबसे अच्छा गेटवे दवा है जो हुक पाने के लिए देख रहा है।
सैम्पसन

1
एक युवा जावास्क्रिप्ट / वेब डेवलपर के रूप में मुझे आपका प्रश्न सुपर दिलचस्प लगता है। जैसा कि पहले कहा गया था कि नोड.जेएस और अन्य विभिन्न संस्करणों के लिए मंच हैं, हालांकि यदि आप जावास्क्रिप्ट में वास्तव में सहज हैं, तो आप वास्तव में किसी भी अन्य भाषा को आसानी से सीख सकते हैं, जिसकी मैं अत्यधिक अनुशंसा करूंगा। यह न केवल मौलिक कंप्यूटर विज्ञान को समझने की आपकी क्षमता का विस्तार करता है, बल्कि इससे नई चीजों को सीखना भी आसान हो जाता है।
OneChillDude

8

रोबोट ऑपरेटिंग सिस्टम (ROS) आपके रोबोट को नियंत्रित करने के लिए जावास्क्रिप्ट का उपयोग करने की क्षमता प्रदान करता है। विशेष रूप से आप रसब्रिज को देखना चाहेंगे । फिर आपको अपने रोबोट को नियंत्रित करने वाले माइक्रोकंट्रोलर के साथ इंटरफ़ेस के लिए रोसेरियल का उपयोग करने की आवश्यकता होगी ।

जबकि मैं ROS का बहुत बड़ा प्रशंसक हूं, यह रोबोटिक्स IMHO के क्षेत्र की खोज शुरू करने के लिए एक अत्यधिक जटिल तरीका है। बेहतर होगा कि आप एक Arduino लेने के लिए सेवा करें और थोड़ी सी सीखें। Arduino प्रक्रिया को सरल बनाने का एक बड़ा काम करता है और C एक सिंटैक्स परिप्रेक्ष्य से JS से एक बड़ा विचलन नहीं है।


5

आम तौर पर एक मंच के साथ नोड.जेएस का उपयोग करने के कई तरीके हैं, जैसे कि आरपीआई के लिए यह एक हैयदि आप सिर्फ उन्हें खोजते हैं तो बहुत अधिक समान हैं ।

एक और दिलचस्प अरडूगेट है , जो वेब पेजों को जेएस के माध्यम से आर्डिनो के साथ संवाद करने की सुविधा देता है (हालांकि संभवतः ऐसा नहीं है जो आप चाहते थे क्योंकि यह आर्टुइनो को संकलित और लोड नहीं करता है)

हालांकि मैं वास्तव में यह नहीं देखता कि एक अलग भाषा का उपयोग करने में क्या गलत है। मैं खुद जेएस में मुख्य रूप से लिखता हूं, लेकिन मैं अपने आप को सी ++ में एक Arduino की पूरी तरह से आरामदायक प्रोग्रामिंग पाता हूं (यह सी और जावा को भी अनुमति देता है, और यदि आप थोड़ा काम करते हैं, तो कुछ और भाषाएँ )। याद रखें, रोबोट की प्रोग्रामिंग के लिए हमें कुछ भी कल्पना करने की आवश्यकता नहीं है - बस सामान्य ifएस, forएस, whileएस, switchएस, और सामयिकclass। वाक्यविन्यास जानें, और आप जाने के लिए अच्छे हैं :) एकमात्र बात यह है कि सी / सी ++ / जावा दृढ़ता से टाइप किया जाता है (हालांकि यदि आप आरपीआई का उपयोग कर रहे हैं, तो अजगर कमजोर रूप से टाइप किया गया है, लेकिन एक मिलियन अधिक तरीकों से पिकी है) आपको शुरुआत में थोड़ी निराशा हो सकती है जब आपको हर चीज के लिए प्रकार निर्दिष्ट करना होगा। देशी भाषाओं का उपयोग करने का एक फायदा यह है कि नेट पर एपीआई और उदाहरण कोड खोजना बहुत आसान है। उदाहरण के लिए, एक तरफ ArduGate (जो इसे बनाया गया है और संभवतः वह नहीं है जो आप चाहते थे), मुझे EEPROM तक पहुँचने का कोई रास्ता नहीं मिल रहा है - एक सामान्य कार्य। इसलिए, जब तक आप सरल कार्यक्रमों से चिपके रहना चाहते हैं, देशी भाषाओं का उपयोग करना बेहतर है।


2

मेरे एक दोस्त के पास वास्तव में एक बहुत शक्तिशाली टैंक रोबोट है जो NodeJS के साथ वाईफाई पर नियंत्रित है। रोबोट स्वयं 150 पाउंड में बिल्कुल "छोटा-रोबोटिक्स" नहीं है, लेकिन आप शायद स्रोत कोड से काफी कुछ सीख सकते हैं। इसमें एक नेटबुक ऑनबोर्ड है जिसमें एक वेबसर्वर चल रहा है और एक Arduino से बात कर रहा है। आप उसके जीथब प्रोजेक्ट पृष्ठ पर स्रोत कोड पा सकते हैं । किसी अन्य कंप्यूटर पर वेब ब्राउज़र से वास्तविक समय नियंत्रण आश्चर्यजनक रूप से उत्तरदायी है।


2

Microsoft रोबोटिक्स डिसेंट्रलाइज्ड सॉफ्टवेयर सर्विसेज प्रोटोकॉल (DSSP) नामक एक प्रोटोकॉल का उपयोग करता है और उन्होंने एक लाइसेंस के तहत चश्मा जारी किया जो किसी को भी किसी भी भाषा में इसे लागू करने की अनुमति देता है। DSSP प्रोटोकॉल वर्तमान वेब मानकों के साथ पूरी तरह से संगत है और मुझे लगता है कि इसे जावास्क्रिप्ट और NodeJS में लागू करना एक अच्छा विचार होगा। यह आपके नोड अनुप्रयोग के लिए आज उपलब्ध किसी भी DSS रोबोटिक्स सेवाओं के साथ बातचीत करना संभव बना सकता है।


1

जावास्क्रिप्ट के साथ AR.Drone 2.0 का प्रोग्रामिंग सुपर मजेदार है। यहाँ एक उदाहरण है जो ड्रोन को उतारता है, चारों ओर घूमता है, एक फ्लिप करता है, फिर लैंड करता है, सभी नोड-आर-ड्रोन लाइब्रेरी का उपयोग करते हैं :

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 - जेएस रोबोटिक्स का उदय रोबोटिक्स के लिए फायदे के बारे में बात करता है, विशेष रूप से प्राकृतिक तरीका है कि वास्तविक दुनिया की वस्तुओं और कार्यों को श्रृंखलाबद्ध, घटना प्रक्रियाओं के रूप में मॉडलिंग की जा सकती है। एक ड्रोन को एनिमेट करने के लिए ऊपर दिया गया उदाहरण कोड एक HTML तत्व को एनिमेट करने के लिए jQuery का उपयोग करने के समान है:

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

मैंने उत्तर को अधिक विशिष्ट बनाने के लिए संपादित किया है और अधिक संदर्भ जोड़ रहा हूं। प्रतिक्रिया के लिए धन्यवाद।
जॉन वाइसमैन

धन्यवाद जॉन, यह एक महान संपादन है, बस इस तरह की चीज है जो भविष्य के प्रमाण का जवाब देती है।
मार्क बूथ

0

एस्प्रिनो नामक एक परियोजना भी है , जो कम शक्ति वाले एआरएम माइक्रोकंट्रोलर्स के लिए एक जावास्क्रिप्ट दुभाषिया है। यह छोटे-जेएस परियोजना का एक फिर से लिखना है , जावास्क्रिप्ट के लिए एक छोटा सी ++ दुभाषिया है।


0

यह जावास्क्रिप्ट-आधारित रोबोटिक्स परियोजनाओं को ऑनलाइन देखने के लिए सहायक हो सकता है क्योंकि जावास्क्रिप्ट-आधारित रोबोटिक्स समुदाय तेजी से बढ़ रहा है क्योंकि यह प्रश्न पूछा गया था। उदाहरण के लिए, https://burningservos.com के पीछे ब्लॉगर ने खरोंच से चार-पैर वाले रोबोट के निर्माण की प्रक्रियाओं का दस्तावेजीकरण किया और ब्लॉगर द्वारा मूल्यांकन या उपयोग किए जाने वाले कई पुस्तकालयों जावास्क्रिप्ट पर चर्चा की। गड़बड़ में (या यहां तक ​​कि Adafruit और Hackster.io पर ) "हार्डवेयर" खंड भी है, जहां लोग अपनी जावास्क्रिप्ट-आधारित हार्डवेयर हैकिंग परियोजनाओं को साझा करते हैं जहां आप उपयोग किए गए पुस्तकालयों की जांच कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.