Robot lập trình với JavaScript


39

Là một người dành phần lớn thời gian để lập trình JavaScript, con đường tốt nhất để đi vào robot nhỏ mà không cần phải đi quá nhiều so với trọng tâm ngôn ngữ hiện tại của tôi?

Có bộ công cụ dự án hoặc công cụ nào sử dụng ngôn ngữ JavaScript có thể giúp lĩnh vực này dễ tiếp cận hơn đối với các nhà phát triển như tôi không? Tôi thậm chí sẽ quan tâm đến các môi trường ảo nơi tất cả các mã được thực thi trong một mô phỏng.


3
Bạn nên kiểm tra bài đăng này ... weblog.bescentp.com/javascript-arduino-programming-with-nodejs Nó thảo luận về việc triển khai Js thuần túy của giao thức được sử dụng cho Arduino. Công cụ khá mát mẻ.
Chris Gutierrez

Tôi muốn thấy một số triển khai nodejs chạy trên robot. Người ta có thể điều khiển robot qua web bằng cách sử dụng websockets.
Chúa ơi.

Bạn không lập trình bằng JavaScript - Bạn viết các tập lệnh (được sử dụng trên trình duyệt để Thao tác máy khách của DOM) Bạn có thể lập trình trong JAVA - hoàn toàn khác. node.jsnó cũng không phải là javascript. Đó là thư viện C diễn giải các cuộc gọi AJAX dưới dạng máy chủ mini và được sử dụng cho các yêu cầu âm lượng lớn - ví dụ trên ebay- Bạn không cần làm mới một trang trên một mục kết thúc vì javascript đồng bộ hóa giá và thời gian đặt giá thầu bằng cách sử dụng nút .js phản hồi cực nhanh trong khi giảm chi phí lưu lượng) node.js tốt cho arduino vì nó làC
Piotr Kula

Vì vậy, bạn sẽ lập trình bot trong cvà giao diện với nó bằng node.js - vốn đã sử dụng JavaScript ajax cho yêu cầu nhưng bạn cũng có thể sử dụng các yêu cầu máy chủ hoặc mã thông minh khác không liên quan đến JavaScript.
Piotr Kula

Có phải mã Arduino là cách hiệu quả duy nhất hiện nay?
Huzo

Câu trả lời:


22

Có một vài dự án ngoài đó kết hợp nền tảng Arduino với công cụ thực thi javascript của Node.js. Hãy xem Johnny-Five , một thư viện nằm trên giao thức điều khiển từ xa Arduino Firmata hoặc nút- Reflea , là giao diện Node.js cho giao thức điều khiển từ xa Arduino Reflecta.

Cá nhân tôi đã chế tạo một robot điều khiển Node.js có tên RocketBot , kết hợp nút phản xạ với nút điều khiển nút trên đỉnh Beaglebone và Arduino để tôi có thể chứng thực phương pháp này hoạt động tốt.


12

Hmm, câu hỏi thú vị! Cá nhân tôi sẽ đề nghị bạn hãy xem nền tảng Arduino. Nó được lập trình bằng C, vì vậy cú pháp sẽ trở nên ... quen thuộc với người viết JavaScript. Theo ý kiến ​​khiêm tốn của tôi, biết cách cú pháp (trong khi các vòng lặp, nếu / hơn các khối, v.v.) được đặt ra là 70% của trận chiến, một khi bạn đã quen với điều đó, bạn có thể cắm và chơi. Bạn có thể chọn một bộ khởi động với giá khoảng 30 đô la trực tuyến từ những người giỏi tại SparkFun.com hoặc adafbean.com, bạn có thể lập trình nó trên PC, máy Mac hoặc Linux và nó được cài sẵn các ví dụ đủ để bạn dễ dàng truy cập ngôn ngữ nhanh chóng Tôi không nói rằng bạn sẽ bỏ một số mã JavaScript vào đó và tiếp tục theo cách của bạn, nhưng tôi là một lập trình viên JavaScript khi tôi bắt đầu với Arduino và tôi thấy nó khá dễ để chọn và chạy cùng. Chúc may mắn,

Tái bút - bạn cũng nên làm quen / thoải mái với việc xây dựng các mạch điện tử (đèn, động cơ và những thứ tương tự), nhưng bất kỳ bộ giới thiệu Arduino tốt nào xứng đáng với muối của nó sẽ giúp bạn bắt đầu nếu bạn không có kinh nghiệm.


3
Tái bút - Một câu hỏi hay cho trang Robotics mới ra mắt, tôi nghĩ rằng :)
Chris

1
Câu trả lời tuyệt vời, @Chris. Tôi đã nghe nói về nền tảng Arduino từ một số nhà phát triển JavaScript khác. Có lẽ đó là loại thuốc tốt nhất cho một nhà phát triển muốn tìm hiểu.
Sampson

1
Là một nhà phát triển web / JavaScript trẻ, tôi thấy câu hỏi của bạn rất thú vị. Như đã nêu trước đây có các nền tảng cho node.js và các phiên bản khác nhau, tuy nhiên nếu bạn thực sự thoải mái với JavaScript, bạn thực sự có thể dễ dàng học bất kỳ ngôn ngữ nào khác, mà tôi rất khuyến nghị. Nó không chỉ mở rộng khả năng hiểu khoa học máy tính cơ bản mà còn giúp việc học những điều mới trở nên dễ dàng hơn.
OneChillDude

8

Hệ điều hành Robot (ROS) cung cấp khả năng sử dụng Javascript để điều khiển robot của bạn. Cụ thể bạn sẽ muốn nhìn vào rosbridge . Sau đó, bạn sẽ cần sử dụng rosserial để giao tiếp với vi điều khiển điều khiển robot của bạn.

Mặc dù tôi là một fan hâm mộ lớn của ROS nhưng đây là một cách quá phức tạp để bắt đầu khám phá lĩnh vực robot IMHO. Bạn sẽ được phục vụ tốt hơn để chọn Arduino và học một chút về C. Arduino thực hiện công việc tuyệt vời để làm cho quy trình trở nên đơn giản và C không phải là một sai lệch lớn so với JS từ góc độ cú pháp.


5

Nói chung, có nhiều cách để sử dụng node.js với một nền tảng, như cách này cho RPi . Có rất nhiều cái tương tự nếu bạn chỉ tìm kiếm chúng .

Một điều thú vị khác là ArduGate , cho phép các trang web giao tiếp với arduino thông qua JS (mặc dù có lẽ không chính xác những gì bạn muốn vì nó không biên dịch và tải vào arduino)

Mặc dù tôi thực sự không thấy có gì sai khi sử dụng một ngôn ngữ khác. Bản thân tôi viết chủ yếu bằng JS, nhưng tôi thấy mình hoàn toàn thoải mái khi lập trình Arduino trong C ++ (nó cũng cho phép C và Java và nếu bạn làm việc một chút, thêm một vài ngôn ngữ nữa ). Hãy nhớ rằng, chúng ta không cần bất cứ thứ gì lạ mắt để lập trình robot - chỉ là ifs, fors, whiles, switches và thỉnh thoảngclass. Tìm hiểu cú pháp và bạn rất giỏi đi :) Điều duy nhất là C / C ++ / Java được gõ mạnh (mặc dù nếu bạn đang sử dụng RPi, python được gõ yếu nhưng rất khó chọn trong hàng triệu cách khác), vì vậy bạn có thể có một chút thất vọng khi bắt đầu khi bạn phải chỉ định loại cho mọi thứ. Một lợi thế của việc sử dụng ngôn ngữ bản địa là việc tìm kiếm API và mã ví dụ trên mạng dễ dàng hơn nhiều. Ví dụ: ngoài ArduGate (đã tích hợp sẵn và có thể không phải là thứ bạn muốn), tôi không thể tìm thấy bất kỳ cách nào để truy cập EEPROM - một nhiệm vụ chung. Vì vậy, trừ khi bạn muốn sử dụng các chương trình đơn giản, tốt hơn hết là sử dụng ngôn ngữ bản địa.


2

Một người bạn của tôi thực sự có một robot xe tăng khá mạnh được điều khiển bằng NodeJS qua wifi. Bản thân robot không chính xác là "robot nhỏ" ở mức 150 pound, nhưng có lẽ bạn có thể học được khá nhiều từ mã nguồn. Nó có một netbook trên bo mạch chạy máy chủ web và nói chuyện với Arduino. Bạn có thể tìm thấy mã nguồn trên trang dự án Github của anh ấy . Điều khiển thời gian thực từ trình duyệt web trên một máy tính khác đáp ứng đáng ngạc nhiên.


2

Microsoft Robotics sử dụng một giao thức gọi là Giao thức dịch vụ phần mềm phi tập trung (DSSP) và họ đã phát hành các thông số kỹ thuật theo giấy phép cho phép bất cứ ai thực hiện nó bằng bất kỳ ngôn ngữ nào. Giao thức DSSP hoàn toàn tương thích với các tiêu chuẩn web hiện tại và tôi nghĩ rằng sẽ là một ý tưởng tuyệt vời để triển khai nó trong JavaScript và NodeJS. Điều đó có thể giúp ứng dụng nút của bạn có thể tương tác với bất kỳ dịch vụ robot DSS nào hiện có.


1

Lập trình AR.Drone 2.0 bằng Javascript là siêu thú vị. Dưới đây là một ví dụ khiến máy bay không người lái cất cánh, di chuyển xung quanh, thực hiện lật, sau đó hạ cánh, tất cả đều sử dụng thư viện nút-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();
  });

Bài đăng trên blog NodeBots - Rise of JS Robotics nói về những lợi thế mà javascript mang lại cho robot, đặc biệt là cách tự nhiên mà các đối tượng và hành động trong thế giới thực có thể được mô hình thành các quy trình có thể xâu chuỗi . Mã ví dụ ở trên để tạo hiệu ứng cho một máy bay không người lái trông rất giống với việc sử dụng jQuery để tạo hiệu ứng cho một phần tử HTML:

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

Tôi đã chỉnh sửa câu trả lời để cụ thể hơn và thêm bối cảnh. Cảm ơn vì bạn đã phản hồi.
John Wiseman

Cảm ơn John, đó là một bản chỉnh sửa tuyệt vời, chỉ là thứ tạo ra câu trả lời trong tương lai.
Gian hàng Mark

0

Ngoài ra còn có một dự án tên là Espruino , đó là một trình thông dịch JavaScript cho các bộ vi điều khiển ARM công suất thấp. Nó là một bản viết lại của dự án tiny-js , một trình thông dịch C ++ nhỏ cho Javascript.


0

Có thể hữu ích khi tìm kiếm các dự án robot dựa trên javascript trực tuyến vì cộng đồng người máy dựa trên javascript đã phát triển nhanh chóng kể từ khi câu hỏi này được hỏi. Ví dụ: blogger đằng sau https://burningservos.com đã ghi lại các quy trình xây dựng robot bốn chân từ đầu và thảo luận về nhiều thư viện javascript mà blogger đã đánh giá hoặc sử dụng. Ngoài ra còn có "phần cứng" trong trục trặc (hoặc thậm chí tại AdafruitHackster.io ), nơi mọi người chia sẻ phần cứng dựa trên JavaScript của họ hack dự án nơi bạn có thể kiểm tra thư viện họ đã sử dụng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.