JavaScriptを使用したロボットのプログラミング


39

JavaScriptでのプログラミングの時間の大半を費やしている誰かとして、私の現在の言語フォーカスからあまり逸脱することなく、小ロボットに参入するための最良のルートは何ですか?

私のような開発者にとってフィールドをより親しみやすいものにする可能性のあるJavaScript言語を使用するプロジェクトキットまたはツールはありますか?すべてのコードがシミュレーションで実行される仮想環境にも興味があります。


3
この投稿をチェックアウトする必要があります... weblog.bocoup.com/javascript-arduino-programming-with-nodejs これは、Arduinoに使用されるプロトコルの純粋なJs実装について説明しています。かなりクールなもの。
クリスグティエレス

ロボットで実行されているnodejs実装をいくつか見たいです。WebSocketを使用してWeb上でロボットを制御するだけの場合もあります。
ローLord。

JavaScriptではプログラミングしません-スクリプトを記述します(ブラウザでDOMを操作するために使用されます)JAVAでプログラミングできます-これはまったく異なります。node.jsJavaScriptでもありません。これは、AJAX呼び出しをミニサーバーとして解釈し、ebayなどの大量のリクエストに使用されるCライブラリです。javascriptはノードを使用して入札価格と入札時間を同期するため、終了するアイテムのページを更新する必要はありません。 .jsファイル極めて迅速な応答トラフィックのオーバーヘッドを削減しながら)Node.jsのそれはArduinoの原因のために良いですC
ピョートル・クラ

したがって、cnode.jsを使用してボットをプログラミングし、インターフェイスします。node.jsは、リクエストにJavaScript ajaxを本質的に使用しますが、サーバーリクエストまたはJavaScriptとは関係のない他の巧妙なコードを使用することもできます。
ピョートルクラ

Arduinoコードは現在、唯一の効率的な方法ですか?
フゾ

回答:


22

ArduinoプラットフォームをNode.js javascript実行エンジンに結合するプロジェクトがいくつかあります。Arduino FirmataリモートコントロールプロトコルまたはArduino Reflectaリモートコントロールプロトコル用のNode.jsインターフェイスであるnode-reflecta上のライブラリであるJohnny-Fiveを見てください。

私は、RocketBotと呼ばれるNode.js制御のロボットを個人的に構築しました。これは、BeagleboneとArduinoの上にnode-reflectaとnode-joystickを組み合わせて、このアプローチがうまく機能することを証明します。


12

うーん、興味深い質問です!個人的には、Arduinoプラットフォームをご覧になることをお勧めします。Cでプログラムされているので、構文はJavaScriptの作成者にはおなじみになります。私の謙虚な意見では、構文(whileループ、if / thanブロックなど)がどのようにレイアウトされているかを知ることは戦いの70%であり、それに慣れたらプラグアンドプレイできます。SparkFun.comまたはadafruit.comの優秀な人からオンラインで約30ドルのスターターキットを手に入れることができ、PC、Mac、またはLinuxマシンでプログラムできます。言語をすばやく。JavaScriptコードをそこにドロップして途中に行くと言っているわけではありませんが、Arduinoを使い始めたときはJavaScriptプログラマーでしたので、簡単に見つけて実行できます。がんばろう、

PS-電子回路(ライト、モーターなど)の構築にも慣れている必要がありますが、経験がなければ、その価値のあるArduino導入キットを使用して開始できます。


3
PS-駆け出しの、新しく造られたRobotics.SEサイトへの良い質問、私は思う:)
クリス

1
素晴らしい答え、@クリス。他のJavaScript開発者からArduinoプラットフォームについて聞いたことがあります。おそらく、それは夢中になりたい開発者にとって最高のゲートウェイ薬です。
サンプソン

1
若いJavaScript / Web開発者として、あなたの質問は非常に興味深いと思います。前に述べたように、node.jsおよび他のさまざまなバージョン用のプラットフォームがありますが、JavaScriptに本当に慣れている場合は、他の言語を簡単に習得できます。これを強くお勧めします。基本的なコンピューターサイエンスを理解する能力が高まるだけでなく、新しいことをより簡単に学ぶことができます。
OneChillDude

8

Robot Operating System(ROS)は、Javascriptを使用してロボットを制御する機能を提供します。特にrosbridgeをご覧ください。次に、rosserialを使用して、ロボットを制御するマイクロコントローラーとインターフェイスする必要があります。

私がROSの大ファンである間、これはロボット工学IMHOの分野を探検し始める非常に複雑な方法です。Arduinoを手に取り、Cを少し学ぶことで、より良いサービスが得られます。Arduinoは、プロセスを単純化する素晴らしい仕事をしており、Cは構文の観点からJSから大きく逸脱していません。


5

一般に、RPi用のこのように、プラットフォームでnode.jsを使用する多くの方法があります。あなたがそれらを検索するだけなら、もっと似たようなものがあります

もう1つの興味深いものはArduGateです。これにより、WebページがJSを介してarduinoと通信できるようになります(ただし、arduinoにコンパイルおよびロードされないため、おそらく正確には望んでいません)

別の言語を使用することの何が問題なのかは本当にわかりませんが。私自身は主にJSで書いていますが、C ++でArduinoをプログラミングするのに非常に快適です(CとJavaも可能です。少し仕事をすれば、かなり多くの言語が使えます)。覚えておいてください、ロボットをプログラミングするのに派手なものは必要ありません-通常ifのs、fors、whiles、switches、そして時々class。構文を学ぶと、あなたは行ってもいいです:)唯一のことは、C / C ++ / Javaが強く型付けされていることです(ただし、RPiを使用している場合、Pythonは弱い型付けですが、100万以上の方法でうるさいです)すべてのタイプを指定する必要がある場合、最初は少しフラストレーションが生じる場合があります。ネイティブ言語を使用する利点の1つは、ネット上でAPIやサンプルコードを見つけるのがはるかに簡単になることです。たとえば、ArduGate(組み込まれており、おそらくあなたが望んでいるものではない)を除いて、EEPROMにアクセスする方法はありません。これは一般的なタスクです。ですから、単純なプログラムに固執したいのでなければ、母国語を使用する方が良いでしょう。


2

私の友人は実際にWifi経由でNodeJSで制御される非常に強力な戦車ロボットを持っています。ロボット自体は150ポンドという厳密な「小型ロボット」ではありませんが、おそらくソースコードからかなり多くを学ぶことができます。オンボードでウェブサーバーを実行し、Arduinoと通信するネットブックがあります。彼のGithub プロジェクトページでソースコードを見つけることができます。別のコンピューター上のWebブラウザーからのリアルタイム制御は、驚くほど反応が良いです。


2

Microsoft Roboticsは、分散ソフトウェアサービスプロトコル(DSSP)と呼ばれるプロトコルを使用し、誰でも任意の言語で実装できるライセンスの下で仕様リリースしました。DSSPプロトコルは現在のWeb標準と完全に互換性があり、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は、javascriptがロボット工学にもたらす利点、特に現実世界のオブジェクトとアクションをチェーン可能なイベントプロセスとしてモデル化できる自然な方法について語っています。ドローンをアニメーション化する上記のサンプルコードは、jQueryを使用してHTML要素をアニメーション化するのと非常によく似ています。

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

回答を編集して、より具体的にし、コンテキストを追加しました。フィードバックをお寄せいただきありがとうございます。
ジョンワイズマン

ジョンに感謝します。これは素晴らしい編集であり、未来を保証する答えになるようなものです。
マークブース

0

Espruinoと呼ばれるプロジェクトもあります。これは、低電力ARMマイクロコントローラー用のJavaScriptインタープリターです。これは、Javascript用の小さなC ++インタープリターであるtiny-jsプロジェクトの書き直しです。


0

JavaScriptベースのロボティクスコミュニティはこの質問が尋ねられて以来急速に成長しているため、JavaScriptベースのロボティクスプロジェクトをオンラインで検索すると役立つ場合があります。たとえば、https: //burningservos.comの背後にいるブロガーは、4本足のロボットをゼロから構築するプロセスを文書化し、ブロガーが評価または使用した複数のライブラリjavascriptについて議論しました。また、グリッチ(またはAdafruitHackster.ioにも)に「ハードウェア」セクションがあり、人々が使用したライブラリをチェックアウトできるJavaScriptベースのハードウェアハッキングプロジェクトを共有しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.