หุ่นยนต์โปรแกรมมิ่งด้วยจาวาสคริปต์


39

ในฐานะที่เป็นคนที่ใช้เวลาส่วนใหญ่ในการเขียนโปรแกรมใน JavaScript เส้นทางที่ดีที่สุดในการเข้าสู่หุ่นยนต์ขนาดเล็กโดยไม่จำเป็นต้องเบี่ยงเบนจากจุดสนใจภาษาปัจจุบันของฉันคืออะไร

มีชุดเครื่องมือหรือเครื่องมือที่ใช้ประโยชน์จากภาษาจาวาสคริปต์ที่อาจทำให้ฟิลด์เข้าถึงได้ง่ายขึ้นสำหรับนักพัฒนาอย่างฉันหรือไม่? ฉันจะสนใจสภาพแวดล้อมเสมือนจริงซึ่งรหัสทั้งหมดจะถูกดำเนินการในการจำลอง


3
คุณควรเช็คเอาต์โพสต์นี้ ... weblog.bocoup.com/javascript-arduino-programming-with-nodejs มันกล่าวถึงการใช้ Js บริสุทธิ์ของโปรโตคอลที่ใช้สำหรับ Arduino สิ่งที่ดีงาม
Chris Gutierrez

ฉันต้องการที่จะเห็นการใช้งาน nodejs บางอย่างที่ทำงานบนหุ่นยนต์ หนึ่งอาจควบคุมหุ่นยนต์ผ่านเว็บโดยใช้เว็บซ็อกเก็ต
ลอร์ดโลห์

คุณไม่ได้โปรแกรมใน JavaScript - คุณเขียนสคริปต์ (ซึ่งใช้บนเบราว์เซอร์สำหรับการจัดการไคลเอ็นต์ของ DOM) คุณสามารถโปรแกรมใน JAVA - ซึ่งแตกต่างอย่างสิ้นเชิง node.jsไม่ใช่จาวาสคริปต์ มันเป็นห้องสมุด C ที่ตีความการโทร AJAX เป็นเซิร์ฟเวอร์ขนาดเล็กและใช้สำหรับการร้องขอปริมาณมากเช่นใน ebay- คุณไม่จำเป็นต้องรีเฟรชหน้าในรายการที่จะสิ้นสุดเพราะจาวาสคริปต์ประสานราคาประมูลและเวลาโดยใช้โหนด .js การตอบสนองที่รวดเร็วมากในขณะที่ลดปริมาณการใช้ข้อมูล) node.js เป็นสิ่งที่ดีสำหรับ arduino เพราะมันเป็นC
Piotr Kula

ดังนั้นคุณจะตั้งโปรแกรม bot in cและอินเตอร์เฟสโดยใช้ node.js ซึ่งใช้ JavaScript ajax สำหรับการร้องขอโดยกำเนิด แต่คุณยังสามารถใช้การร้องขอเซิร์ฟเวอร์หรือรหัสที่ฉลาดอื่น ๆ ที่ไม่เกี่ยวข้องกับ JavaScript ได้
Piotr Kula

รหัส Arduino เป็นวิธีที่มีประสิทธิภาพเพียงอย่างเดียวในปัจจุบันหรือไม่?
Huzo

คำตอบ:


22

มีโครงการสองสามอย่างที่ทำร่วมกับแพลตฟอร์ม Arduino กับเอ็นจิ้นการประมวลผล javascript ของ Node.js ลองดูที่Johnny-Fiveซึ่งเป็นห้องสมุดที่อยู่ด้านบนของ Arduino Firmata remote control protocol หรือnode-reflectaซึ่งเป็นอินเตอร์เฟส Node.js สำหรับโปรโตคอลการควบคุมระยะไกล Arduino Reflecta

ฉันสร้างหุ่นยนต์ควบคุม Node.js ที่เรียกว่าRocketBotซึ่งเป็นการรวมโหนด-reflecta เข้ากับโหนดจอยสติ๊กที่อยู่ด้านบนของ Beaglebone และ Arduino ดังนั้นฉันจึงสามารถยืนยันได้ว่าวิธีนี้ใช้ได้ดี


12

อืมคำถามที่น่าสนใจ! ส่วนตัวผมขอแนะนำให้คุณดูที่แพลตฟอร์ม Arduino มันถูกโปรแกรมใน C ดังนั้นไวยากรณ์จะเป็น ... คุ้นเคยกับนักเขียน JavaScript ในความเห็นที่ต่ำต้อยของฉันการรู้ว่าไวยากรณ์ (ในขณะที่ลูปถ้า / บล็อกมากกว่า ฯลฯ ) ได้รับการจัดวางเป็น 70% ของการต่อสู้เมื่อคุณคุ้นเคยกับสิ่งนั้นคุณสามารถเสียบแล้วเล่นได้ คุณสามารถรับชุดเริ่มต้นสำหรับ $ 30 ออนไลน์จากคนดีที่ SparkFun.com หรือ adafruit.com คุณสามารถตั้งโปรแกรมบนพีซี Mac หรือ Linux และมันมาพร้อมกับตัวอย่างที่เพียงพอเพื่อให้คุณสามารถ ภาษาอย่างรวดเร็ว ฉันไม่ได้บอกว่าคุณเพียงแค่วางโค้ด JavaScript ลงไปแล้ว แต่ฉันก็เป็นโปรแกรมเมอร์ JavaScript เมื่อฉันเริ่มต้นด้วย Arduino และฉันพบว่ามันง่ายในการรับและรันด้วย โชคดี,

ป.ล. - คุณควรคุ้นเคยหรือคุ้นเคยกับการสร้างวงจรอิเล็กทรอนิกส์ (ไฟมอเตอร์และสิ่งที่คล้ายกัน) แต่ชุดแนะนำ Arduino ที่ดีที่มีค่าเกลือจะทำให้คุณเริ่มต้นได้ถ้าคุณไม่มีประสบการณ์


3
PS - เป็นคำถามที่ดีสำหรับนก, เว็บไซต์ Robotics.SE minted ใหม่ผมคิดว่า :)
คริส

1
คำตอบที่ดี @Chris ฉันเคยได้ยินเกี่ยวกับแพลตฟอร์ม Arduino จากนักพัฒนา JavaScript อื่น ๆ บางทีนี่อาจเป็นยาเกตเวย์ที่ดีที่สุดสำหรับนักพัฒนาที่ต้องการติดยาเสพติด
Sampson

1
ในฐานะนักพัฒนา JavaScript / เว็บหนุ่มฉันพบว่าคำถามของคุณน่าสนใจมาก ตามที่ระบุไว้ก่อนหน้านี้มีแพลตฟอร์มสำหรับ node.js และเวอร์ชันต่าง ๆ อื่น ๆ แต่ถ้าคุณสะดวกสบายใน JavaScript จริงๆคุณสามารถเรียนรู้ภาษาอื่นได้อย่างง่ายดายซึ่งฉันขอแนะนำ ไม่เพียงเพิ่มความสามารถในการเข้าใจวิทยาศาสตร์คอมพิวเตอร์ขั้นพื้นฐานเท่านั้น แต่ยังทำให้การเรียนรู้สิ่งใหม่ง่ายขึ้น
OneChillDude

8

ระบบปฏิบัติการหุ่นยนต์ (ROS) มอบความสามารถในการใช้ Javascript เพื่อควบคุมหุ่นยนต์ของคุณ โดยเฉพาะคุณจะต้องการที่จะดูที่rosbridge จากนั้นคุณจะต้องใช้rosserialเพื่อเชื่อมต่อกับไมโครคอนโทรลเลอร์ที่ควบคุมหุ่นยนต์ของคุณ

ในขณะที่ฉันเป็นแฟนตัวยงของ ROS นี่เป็นวิธีที่ซับซ้อนเกินกว่าที่จะเริ่มสำรวจทุ่งหุ่นยนต์ IMHO คุณจะได้รับหน้าที่ที่ดีกว่าในการรับ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 ผ่าน wifi ได้ หุ่นยนต์ตัวนั้นไม่ได้เป็น "หุ่นยนต์ตัวเล็ก" อย่างแน่นอนที่ 150 ปอนด์ แต่คุณอาจเรียนรู้ได้เล็กน้อยจากซอร์สโค้ด มันมีเน็ตบุ๊กออนบอร์ดที่ทำงานบนเว็บเซิร์ฟเวอร์และพูดคุยกับ Arduino คุณสามารถค้นหารหัสที่มากับตัวเขา Github หน้าโครงการ การควบคุมแบบเรียลไทม์จากเว็บเบราว์เซอร์บนคอมพิวเตอร์เครื่องอื่นนั้นตอบสนองได้อย่างน่าประหลาดใจ


2

Microsoft Roboticsใช้โปรโตคอลที่เรียกว่าDecentralized Software Services Protocol (DSSP)และพวกเขาปล่อยรายละเอียดภายใต้ใบอนุญาตที่อนุญาตให้ทุกคนนำไปใช้ในภาษาใด ๆ โปรโตคอล DSSP นั้นเข้ากันได้กับมาตรฐานของเว็บในปัจจุบันและฉันคิดว่ามันเป็นความคิดที่ดีที่จะนำไปใช้ใน JavaScript และ NodeJS ซึ่งสามารถทำให้โหนดแอปพลิเคชันของคุณสามารถโต้ตอบกับบริการ DSS robotics ใด ๆ ที่มีอยู่ในปัจจุบัน


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

ฉันได้แก้ไขคำตอบให้เจาะจงยิ่งขึ้นและเพิ่มบริบทมากขึ้น ขอบคุณสำหรับความคิดเห็น.
John Wiseman

ขอบคุณ John นั่นคือการแก้ไขที่ยอดเยี่ยมเพียงเรียงลำดับของสิ่งที่ทำให้คำตอบที่พิสูจน์ได้ในอนาคต
มาร์กบูธ

0

นอกจากนี้ยังมีโครงการที่ชื่อว่าEspruinoซึ่งเป็นล่าม JavaScript สำหรับไมโครคอนโทรลเลอร์ ARM พลังงานต่ำ มันคือการเขียนใหม่ของโครงการจิ๋ว -Jsซึ่งเป็นล่าม C ++ ขนาดเล็กสำหรับ Javascript


0

มันอาจจะเป็นประโยชน์ในการค้นหาโปรเจ็กต์หุ่นยนต์ที่ใช้จาวาสคริปต์ออนไลน์เนื่องจากชุมชนหุ่นยนต์ที่ใช้จาวาสคริปต์นั้นเติบโตอย่างรวดเร็วตั้งแต่คำถามนี้ถูกถาม ตัวอย่างเช่นบล็อกเกอร์ที่อยู่เบื้องหลังhttps://burningservos.comเอกสารกระบวนการของการสร้างหุ่นยนต์สี่ขาตั้งแต่เริ่มต้นและหารือเกี่ยวกับห้องสมุดหลายแห่งจาวาสคริปต์ที่บล็อกเกอร์ประเมินหรือใช้ นอกจากนี้ยังมีส่วน "ฮาร์ดแวร์" ในความผิดพลาด (หรือแม้แต่ที่Adafruit and Hackster.io ) ที่ผู้คนแบ่งปันโครงการแฮ็คฮาร์ดแวร์ที่ใช้จาวาสคริปต์ซึ่งคุณสามารถตรวจสอบไลบรารี่ที่พวกเขาใช้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.