1. Johnny-Five
Johnny-Five는 Javascipt 기반 로봇 및 IoT 플랫폼으로 Bocoup 그룹에서 2012년에 릴리즈된 오픈소스이다. 75명이상의 개발자가 이 프로젝트에 참여하고 있으며, 계속적인 기능 개선 및 확장이 이루어지고 있다.
참고로 Johnny-Five란 이름은 로봇 영화로 유명한 조니 5에서 따온것이다.
80년대 어린이의 우상 Johnny-Five 한장면ㅎ
로봇의 센서와 액추에이터를 추상화한 사용하기 쉬운 API를 제공한다. 다음은 Johnny-Five를 어떻게 사용하는 지 간단히 보여준다.
API는 대부분의 센서와 액추에이터를 지원하며, 예제와 사용법 설명이 매우 쉽게 잘 되어 있다. 아두이노, 라즈베리파이 등 수많은 오픈소스 보드를 지원한다.
다음은 Johnny-Five를 이용해 만든 워킹로봇이다.
2. Cylon.js
오픈 소스 드론, 로봇 등 다양한 플랫폼을 지원하는 Javascript기반 로봇 프레임웍이다.
Johnny-Five와 마찬가지로, 수많은 센서와 액추에이터를 추상화해, 사용법이 매우 간단하다. 다음은 간단한 blink 예제이다.
var Cylon = require("cylon"); // Initialize the robot Cylon.robot({ // Change the port to the correct port for your Arduino. connections: { arduino: { adaptor: 'firmata', port: '/dev/ttyACM0' } }, devices: { led: { driver: 'led', pin: 13 } }, work: function(my) { every((1).second(), function() { my.led.toggle(); }); } }).start();
다음은 지원하는 플랫폼 일부이다.
API는 REST, socket.io, mqtt 프로토콜을 지원하고 있다. Cylon.js를 설치하고, 실행하면, 다음과 같이 로봇 플랫폼을 연결하고, 제어할 수 있는 데쉬보드를 지원한다.
3. ROSnodejs
이름과 같이 ROSnodejs는 로봇 제어 오픈소스 미들웨어로 유명한 ROS(robot operating system)의 Javascript버전으로 ROS와 연결되어 사용되는 로봇 제어 클라이언트 라이브러리이다.
사실 ROS를 직접 사용해도 되지만, 설정 등 작업해야 할 것들이 많다. 이를 Javascript로 추상화하였다.
다음은 echo rostopic 메시지를 다른 로봇 ROS 노드에 전달하는 예제이다.
ros.types([ 'std_msgs/String' ], function(String) { var node = ros.node('talker'); node.topics([ { topic: 'publish_example', messageType: String } ], function(publishExample) { // Uses the ROS command line tool rostopic to echo messages published // over the 'publish_example' topic. var subscribeCommand = 'rostopic' + ' echo' + ' /publish_example'; var child = exec(subscribeCommand, function(error, stdout, stderr) { should.not.exist(error); }); var message = new String({ data: 'howdy' }); publishExample.publish(message); setTimeout(done, 1500); }); });
다음은 자바스크립트로 로봇 플랫폼인 PR2를 제어하는 예이다.
댓글 없음:
댓글 쓰기