JavaScript로 로봇 프로그래밍


39

JavaScript로 프로그래밍하는 데 대부분의 시간을 소비하는 사람으로서 현재 언어 중심에서 벗어나지 않고 작은 로보틱스를 배우는 가장 좋은 방법은 무엇입니까?

JavaScript 언어를 사용하는 프로젝트 키트 또는 도구가 있습니까? 모든 코드가 시뮬레이션에서 실행되는 가상 환경에도 관심이 있습니다.


3
이 게시물을 확인해야합니다 ... weblog.bocoup.com/javascript-arduino-programming-with-nodejs Arduino에 사용되는 프로토콜의 순수한 Js 구현에 대해 설명합니다. 꽤 멋진 물건.
Chris Gutierrez

로봇에서 실행되는 nodejs 구현을보고 싶습니다. 웹 소켓을 사용하여 웹을 통해 로봇을 제어 할 수 있습니다.
주님로.

JavaScript로 프로그래밍하지 않습니다-스크립트를 작성합니다 (DOM의 클라이언트 조작을 위해 브라우저에서 사용됨). 완전히 다른 Java에서 프로그래밍 할 수 있습니다. node.js자바 스크립트도 아닙니다. AJAX 호출을 미니 서버로 해석하고 ebay와 같이 대량 요청에 사용되는 C 라이브러리입니다. javascript가 노드를 사용하여 입찰 가격과 시간을 동기화하므로 종료되는 항목의 페이지를 새로 고칠 필요가 없습니다. 의 .js) 트래픽 오버 헤드를 줄이는 것이 Node.js를하면서 매우 빠른 응답은 그것이 아두 이노 원인을 위해 좋다C
피오트르 쿨라

따라서 cnode.js를 사용하여 봇을 프로그래밍 하고 인터페이스를 제공합니다. node.js는 본질적으로 요청에 JavaScript ajax를 사용하지만 어쨌든 JavaScript와 관련이없는 서버 요청 또는 기타 영리한 코드를 사용할 수도 있습니다.
Piotr Kula

Arduino 코드는 현재 유일한 효율적인 방법입니까?
Huzo

답변:


22

Arduino 플랫폼을 Node.js 자바 스크립트 실행 엔진에 결합시키는 몇 가지 프로젝트가 있습니다. 한 번 봐 가지고 조니-다섯 아두 이노 Firmata 원격 제어 프로토콜 또는 상단에 라이브러리, 노드 REFLECTA 아두 이노 REFLECTA 원격 제어 프로토콜에 대한 Node.js를 인터페이스입니다.

필자는 개인적으로 Node.js 제어 로봇 인 RocketBot을 만들었습니다.이 로봇 은 Node-reflecta를 Beaglebone 및 Arduino 위에 노드 조이스틱과 결합 하여이 접근법이 잘 작동하는지 증명할 수 있습니다.


12

흠, 흥미로운 질문입니다! 개인적으로 Arduino 플랫폼을 살펴볼 것을 제안합니다. C로 프로그래밍되었으므로 JavaScript 작성기에 익숙 할 것입니다. 나의 겸손한 의견으로, 구문 (루프, if / than 블록 등)이 어떻게 배치되는지 아는 것은 전투의 70 %입니다. 일단 익숙해지면 플러그 앤 플레이 할 수 있습니다. SparkFun.com 또는 adafruit.com에서 좋은 사람들로부터 온라인으로 약 30 달러에 스타터 키트를 구입할 수 있으며, PC, Mac 또는 Linux 시스템에서 프로그래밍 할 수 있으며 충분한 예제가 사전로드되어 제공됩니다. 언어를 빨리. JavaScript 코드를 삽입하여 사용하려고한다고 말하지는 않지만 Arduino를 시작할 때 JavaScript 프로그래머였으며, 선택하고 실행하기가 매우 쉽다는 것을 알았습니다. 행운을 빕니다,

추신-전자 회로 (조명, 모터 등)를 만드는 데 익숙하고 편안해야하지만 소금이 가치있는 Arduino 소개 키트를 사용하면 경험이 없으면 시작할 수 있습니다.


3
추신-신생 로봇 신생 로봇에 대한 좋은 질문 SE 사이트, 나는 생각 :)
크리스

1
좋은 답변, @Chris. 다른 JavaScript 개발자의 Arduino 플랫폼에 대해 들었습니다. 아마도 그것은 갈망하는 개발자를위한 최고의 게이트웨이 약물 일 것입니다.
Sampson

1
젊은 JavaScript / 웹 개발자로서 귀하의 질문이 매우 흥미 롭습니다. 이전에 언급 한 것처럼 node.js 및 기타 다양한 버전을위한 플랫폼이 있지만 JavaScript에 익숙하다면 다른 언어를 쉽게 배울 수 있으므로 강력히 추천합니다. 기본적인 컴퓨터 과학을 이해하는 능력을 향상시킬뿐만 아니라 새로운 것을 배우는 것을 더 쉽게 만듭니다.
OneChillDude 1

8

ROS ( Robot Operating System )는 Javascript를 사용하여 로봇을 제어 할 수있는 기능을 제공합니다. 특히 당신은 rosbridge 를보고 싶을 것 입니다. 그런 다음 로봇을 제어하는 ​​마이크로 컨트롤러와 인터페이스 하려면 rosserial 을 사용해야 합니다.

저는 ROS의 열렬한 팬이지만 로봇 공학 IMHO 분야를 탐험하기에는 지나치게 복잡한 방법입니다. Arduino 를 집어 들고 약간의 C를 배우는 것이 더 좋습니다 . Arduino는 프로세스를 간단하게 만드는 훌륭한 일을 수행하며 C는 구문 관점에서 JS와 크게 다르지 않습니다.


5

일반적으로 RPi 용 플랫폼과 같이 node.js를 플랫폼과 함께 사용하는 방법은 여러 가지가 있습니다 . 그냥 검색하면 훨씬 더 비슷한 것들이 있습니다 .

또 다른 흥미로운 것은 ArduGate인데 , 이는 웹 페이지가 JS를 통해 arduino와 통신 할 수있게합니다.

나는 다른 언어를 사용하는 것에 무슨 문제가 있는지 정말로 알지 못하지만. 나 자신은 주로 JS로 작성하지만 C ++로 Arduino를 프로그래밍하는 것이 완벽하게 편안합니다 (C와 Java도 허용하며 약간의 작업을하면 꽤 많은 언어가 필요합니다 ). 우리는 로봇 프로그래밍을 위해 멋진 것을 필요로하지 않습니다. 정상적인 ifs, fors, whiles, switches 및 가끔 발생합니다.class. 구문을 배우고 가십시오 :) 유일한 것은 C / C ++ / Java가 강력하게 입력된다는 것입니다. 모든 유형을 지정해야 할 때 처음에는 약간의 좌절감을 느낄 수 있습니다. 모국어 사용의 한 가지 장점은 인터넷에서 API와 예제 코드를 훨씬 쉽게 찾을 수 있다는 것입니다. 예를 들어, ArduGate (내장되어 있고 아마도 원하는 것이 아닐 수도 있음)를 제외하고는 일반적인 작업 인 EEPROM에 액세스 할 수있는 방법을 찾을 수 없습니다. 따라서 간단한 프로그램을 고수하고 싶지 않다면 모국어를 사용하는 것이 좋습니다.


2

내 친구는 실제로 Wi-Fi를 통해 NodeJS로 제어 되는 매우 강력한 탱크 로봇 을 가지고 있습니다. 로봇 자체는 150 파운드의 "소형 로봇"이 아니지만 소스 코드에서 약간 배울 수 있습니다. 웹 서버를 실행하고 Arduino와 대화하는 넷북이 내장되어 있습니다. 그의 Github 프로젝트 페이지 에서 소스 코드를 찾을 수 있습니다 . 다른 컴퓨터의 웹 브라우저를 통한 실시간 제어는 놀라 울 정도로 반응이 빠릅니다.


2

Microsoft RoboticsDSSP (Decentralized Software Services Protocol) 라는 프로토콜을 사용하며 모든 언어로 구현할 수있는 라이센스로 사양발표 했습니다. DSSP 프로토콜은 현재 웹 표준과 완전히 호환되며 JavaScript 및 NodeJS에서 구현하는 것이 좋습니다. 이를 통해 현재 사용 가능한 모든 DSS 로봇 서비스와 노드 애플리케이션이 상호 작용할 수 있습니다.


1

Javascript로 AR.Drone 2.0 을 프로그래밍하는 것은 정말 재미 있습니다. 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 는 자바 스크립트가 로봇 공학에 대해 갖는 장점, 특히 실제 객체와 동작이 체인이 가능한 이벤트 프로세스로 모델링 될 수있는 자연적인 방법에 대해 이야기합니다. 드론에 애니메이션을 적용하는 위의 예제 코드는 jQuery를 사용하여 HTML 요소에 애니메이션을 적용하는 것과 매우 유사합니다.

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

더 구체적으로 답변을 편집하고 더 많은 컨텍스트를 추가했습니다. 피드백 주셔서 감사합니다.
John Wiseman

고마워 존, 그것은 훌륭한 편집이며, 미래에 대비할 수있는 해답입니다.
마크 부스

0

저전력 ARM 마이크로 컨트롤러를위한 JavaScript 인터프리터 인 Espruino 라는 프로젝트도 있습니다 . Javascript를위한 작은 C ++ 인터프리터 인 tiny-js 프로젝트를 다시 작성했습니다 .


0

이 질문이 제기 된 후 자바 스크립트 기반 로봇 공학 커뮤니티가 빠르게 성장함에 따라 온라인으로 자바 스크립트 기반 로봇 공학 프로젝트를 찾는 것이 도움이 될 수 있습니다. 예를 들어 https://burningservos.com 의 블로거 는 4 개의 다리 로봇을 처음부터 새로 작성하고 블로거가 평가하거나 사용한 여러 라이브러리에 대해 논의하는 프로세스를 문서화했습니다. 결함 (또는 AdafruitHackster.io )에는 사람들이 자신이 사용한 라이브러리를 체크 아웃 할 수있는 자바 스크립트 기반 하드웨어 해킹 프로젝트를 공유하는 "하드웨어"섹션 도 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.