アスラテック株式会社 V-Sido CONNECT RC Mac+JavaScript によるロボット制御の手引き
目 次 1. はじめに 1-1. 本マニュアルの概要 p.3 1-2. 使用する機材など p.4 1-3. 各機器の接続構成と開発イメージ p.5 2. 初期設定と VSidoConn4Mac の導入 2-1. Bluetoothのペアリング p.7 2-2. Node.jsのインストール p.8 2-3. ロボット制御プログラムの導入 p.9 2-4. サンプルプログラムでの動作確認 p.10 3. JavaScript によるロボット開発入門 3-1. ロボットの制御について p.12 3-2. HTML&JavaScriptの作成とロボットの操作手順 p.13 3-3. 目標角制御 のサンプルコード p.14 3-4. 逆運動の利用 のサンプルコード p.15 3-5. ロボットの歩行 のサンプルコード p.16 3-6. さらなるプログラミングに向けて p.17 奥付 1
1. はじめに 2
1-1. 本マニュアルの概要 このマニュアルでは Mac から JavaScript を使って V-Sido CONNECT RC を接続したロボットを制御する方法を紹介します V-Sido CONNECT RC でロボットを動かすには ロボットをどう動かすかを記述したシリアルコマンドを送る必要があります ( シリアルコマンドの詳細については 別途 V-Sido CONNECT RC コマンドリファレンスマニュアル を参照してください ) Mac から V- Sido CONNECT RC にシリアルコマンドを送ればよいのですが 一般に シリアルコマンドを直接作成するのは手間がかかります そこで本マニュアルでは VSidoConn4Mac というプログラムをインストールすることで JavaScript でロボットを制御できる環境を構築する手順を解説していきます 本マニュアルをお読みになる前に V-Sido CONNECT RC スタートアップガイド をお読みいただき V-Sido CONNECT RC で Bluetooth を利用できる環境にしておいてください 3
1-2. 使用する機材など 開発用パソコン (Mac) Bluetooth 対応の機種 V-Sido CONNECT RC Bluetooth アダプタ実装済 GR-001 その他に必要な機材 ソフトウェア テキストエディタ JavaScript インタープリタ Node.js ( 入手方法は後述 ) ロボット制御プログラム VSidoConn4Mac ( 入手方法は後述 ) 4
1-3. 各機器の接続構成と開発イメージ Bluetooth SPP RS-485 ケーブル Mac V-Sido CONNECT RC GR-001 Node.js と VSidoConn4Mac をインストール JavaScript でロボット制御のコーディング 5
2. 初期設定と VSidoConn4Mac の導入 6
2-1. Bluetooth のペアリング Mac と V-Sido CONNECT RC との Bluetooth ペアリングを行います まず V-Sido CONNECT RC(Bluetooth アダプタセットを搭載済みのもの ) を GR- 001 に接続して GR-001 の電源を ON にします (GR-001 と V-Sido CONNECT RC との接続は V-Sido CONNECT RC スタートアップガイド を参照 ) 次に アップルメニュー - システム環境設定 - Bluetooth 画面で ペアリングを行ってください 7
2-2. Node.js のインストール 最新版の Node.js を公式サイトから入手して インストールします 記事執筆時の最新バージョンである v0.12.2 のインストーラ (PKG ファイル ) は 下記の URL から入手できます http://nodejs.org/dist/v0.12.2/node-v0.12.2.pkg 次に Mac OS の アプリケーション - ユーティリティ にある ターミナル を起動して コマンドラインから下記のコマンドを実行します node -v このコマンドを実行すると インストールされている Node.js のバージョンが表示されます 正しく表示されない場合 Nodo.js がうまくインストールできていないので インストールをやり直してください なお Node.js のインストール先をデフォルト以外にした場合 PATH 環境変数を合わせる必要があります 8
2-3. ロボット制御プログラムの導入 次に VSidoConn4Mac を Mac OS にインストールします このプログラムは Github で公開しており ターミナルで下記のコマンドを実行すればインストールが行われます curl -k http://asratec.github.io/vsidoconn4mac/install.sh sh インストールが終わると カレントフォルダの下に VSidoConn4Mac フォルダが作られるので 下記のコマンドでそのフォルダに移動します cd VSidoConn4Mac 下記のコマンドを実行して インストールしたプログラムを実行してください なお パスワードの入力を求められた場合 ログインしているユーザー ( 管理者権限 ) のパスワードを入力してください sudo./runweb.sh sudo./runconn.sh starting server... と表示されれば VSidoConn4Mac の準備は完了です VSidoConn4Mac のソースコードなど詳細は下記のサイトを参照 https://github.com/asratec/vsidoconn4mac 9
2-4. サンプルプログラムでの動作確認 Mac にインストールした V-Sido CONNECT Web API には サンプルプログラムが用意されています 下記の URL でアクセスできるので Mac の Web ブラウザでアクセスして ロボットの動作を確認してください http://localhost:8088 http://localhost:8089 たとえば http://localhost:8088 にアクセスして ブラウザ画面で Robot Control 目標角度設定 とクリックすると このような画面になる ここで パーツ選択 で 頭 を指定して サーボ角度 のスライドを動かせば GR-001 の頭部を動かすことができる 10
3. JavaScript によるロボット開発入門 11
3-1. ロボットの制御について V-Sido CONNECT Web API を使ったロボットの制御には HTML と JavaScript を使用します HTML ロボットを操作するための UI 作成 JavaScript ロボットを制御するためのコード <!DOCTYPE html> <html> <head> <meta content="text/html;charset=shift_jis"> <title> 頭を動かす </title> <script src="http://localhost:8088/ip2/js/vsido.web.js"></script> <script> var vsido = new VSidoWeb({"ip": localhost"}); function exec( var angle = vsido.servoangle(); angle["cycle"]=100; angle["servo"].push({"sid":2,"angle":60}); vsido.send(angle); } </script> </head> <body> <button type= button onclick= exec(); > 実行 </button> </body> </html> 12
3-2. HTML&JavaScript の作成とロボットの操作 1 2 Mac 上でテキストエディタを用い 任意の.html 拡張子のファイルを作成します ( たとえば index.html など ) ロボットを制御するためのコードを記述します サンプルコードとして 次ページ以降に 3 種類の動作を用意したので まずはこのサンプルコードで試してみるとよいでしょう 下記のいずれかの内容をコピーして 1 で作成したファイルにペーストして ファイルを保存してください 3-3. 目標角制御 のサンプルコード 3-4. 逆運動の利用 のサンプルコード 3-5. ロボットの歩行 のサンプルコード 3 作成した HTML ファイルをダブルクリックして Mac の Web ブラウザでファイルを開き ( ファイルを直接 Web ブラウザにドラッグ & ドロップしても可 ) Web ブラウザ上で UI を操作して ロボットを操作できます 13
3-3. 目標角制御 のサンプルコード <!DOCTYPE html> <html> <head> <meta content="text/html;charset=shift_jis"> <title> 頭を動かす </title> <! ロボットの制御をするためのライブラリ localhost は適切な IP アドレスでも可 --> <script src="http://localhost:8089/js/vsido.web.js"></script> <script> var vsido = new VSidoWeb({ ip : localhost }); <! localhost は適切な IP アドレスでも可 --> function exec(){ <! exec 関数 --> var angle = vsido.servoangle(); <! 目標関節角度コマンドの生成 --> angle["cycle"]=100; <! 目標関節角度までの時間の指定 100 x 10ms = 1 秒 --> angle["servo"].push({ "sid":2, <! サーボIDの指定 ( 頭 : 2 ) --> "angle":60 <! 目標関節角度の指定 --> }); vsido.send(angle); <! コマンドの実行 --> } </script> </head> <body> <button type= button onclick= exec(); > 実行 </button> <! ボタンクリックでexec 関数を実行 --> </body> </html> 14
3-4. 逆運動の利用 のサンプルコード <!DOCTYPE html> <html> <head> <meta content="text/html;charset=shift_jis"> <title> 右手を手前に出す </title> <! ロボットの制御をするためのライブラリ localhost は適切なIPアドレスでも可 --> <script src="http://localhost:8089/js/vsido.web.js"></script> <script> var vsido = new VSidoWeb({ ip : localhost }); <! localhost は適切なIPアドレスでも可 --> function exec(){ <! exec 関数 --> var ik = vsido.ik(); <! IKコマンドの生成 --> ik["ikf"]["dist"]["pos"] = true; <! 位置 --> ik["ikf"]["dist"]["rot"] = false; <! 姿勢 --> ik["ikf"]["dist"]["torq"]= false; <! トルク --> var kdt = vsido.kdt(); <! IKコマンドパラメータの生成 --> kdt["kid"] = 2; <! 制御するIK 部位の指定 ( 右手 :2) --> kdt["kdt"]["pos"]["x"] = 0; <! x 軸での可動範囲の位置割合 --> kdt["kdt"]["pos"]["y"] = -100; <! y 軸での可動範囲の位置割合 --> kdt["kdt"]["pos"]["z"] = 0; <! z 軸での可動範囲の位置割合 --> kdt["kdt"]["rot"]["rx"] = 0; <! x 軸での姿勢 --> kdt["kdt"]["rot"]["ry"] = 0; <! y 軸での姿勢 --> kdt["kdt"]["rot"]["rz"] = 0; <! z 軸での姿勢 --> kdt["kdt"]["torq"]["tx"]= 0; <! x 軸でのトルク --> kdt["kdt"]["torq"]["ty"]= 0; <! y 軸でのトルク --> kdt["kdt"]["torq"]["tz"]= 0; <! z 軸でのトルク --> ik["kdts"].push(kdt); <! コマンドの実行 --> vsido.send(ik); } </script> </head> <body> <button type="button" onclick="exec();"> 実行 </button> <! ボタンクリックでexec 関数を実行 --> </body> </html> 15
3-5. ロボットの歩行 のサンプルコード <!DOCTYPE html> <html> <head> <meta content="text/html;charset=shift_jis"> <title> ロボットを前へ歩かせる </title> <! ロボットの制御をするためのライブラリ localhost は適切な IP アドレスでも可 --> <script src="http://localhost:8089/js/vsido.web.js"></script> <script> var vsido = new VSidoWeb({ ip : localhost }); <! localhost は適切な IP アドレスでも可 --> function exec(){ <! exec 関数 --> var motion = vsido.walk(); <! 歩行コマンドの生成 --> motion["forward"]=50; <! 歩行可能最高速度の50% で前進させる --> motion["turn"]=0; <! 回転成分 --> vsido.send(motion); <! コマンドの実行 --> } </script> </head> <body> <button type="button" onclick="exec();"> 実行 </button> <! ボタンクリックでexec 関数を実行 --> </body> </html> 16
3-6. さらなるプログラミングに向けて V-Sido CONNECT Web API の仕様書を参照するなどして 適宜 サンプルコードをカスタマイズしたり オリジナルのコードを作成してください ( https://v-sido-developer.com/learning/connect/v-sido-connectweb-api/) 開発者向けの情報は V-Sido 開発者支援サイト V-Sido Developer で公開しています フォーラムもありますので 不明点などがありましたら そちらもご確認ください https://v-sido-developer.com/ 17
記載された社名 製品名は一般に各社の商標または登録商標です V-Sido CONNECT RC Mac+JavaScript によるロボット制御の手引き Ver. 0.9 アスラテック株式会社 106-0032 東京都港区六本木 2-4-5 公開日 :150514 18