アスラテック 株 式 会 社 V-Sido CONNECT RC Raspberry Pi 2との 連 係 方 法
目 次 1. はじめに 1-1. 本 マニュアルの 概 要 p.3 1-2. 使 用 する 機 材 など p.4 1-3. 各 機 器 の 接 続 イメージ p.5 1-4. JavaScriptによる 開 発 環 境 の 概 略 p.6 2. Raspberry Pi 2を 利 用 する 手 順 2-1. Raspberry Pi 2の 環 境 について p.8 2-2. 各 機 器 との 接 続 p.9 2-3. ロボット 制 御 プログラムのインストール p.10 3. JavaScriptによるロボット 開 発 入 門 3-1. ロボットの 制 御 について p.13 3-2. HTML&JavaScriptの 作 成 手 順 p.14 3-3. 目 標 角 制 御 のサンプルコード p.15 3-4. 逆 運 動 の 利 用 のサンプルコード p.16 3-5. ロボットの 歩 行 のサンプルコード p.17 3-6. ロボットの 操 作 手 順 p.18 3-7. さらなるプログラミングに 向 けて p.19 奥 付 2-4. サンプルプログラムで 動 作 を 確 認 する p.11 1
1. はじめに 2
1-1. 本 マニュアルの 概 要 このマニュアルでは V-Sido CONNECT RC と Raspberry Pi 2 を 連 係 させて HPI Japan 製 ロボット GR-001 を 制 御 する 手 順 を 示 します なお Raspberry Pi2とV-Sido CONNECT RCの 間 はUART を 使 って 有 線 接 続 する 例 を 示 していますが Bluetoothによる 無 線 化 も 可 能 です Raspberry Pi 2からシリアルコマンドを 送 るプログラムを 作 成 して ロボットを 制 御 することもできますが ここでは アスラテックが 提 供 する V-Sido CONNECT Web API を 使 って JavaScriptのプログラ ムでロボットを 制 御 する 方 法 を 紹 介 します また Raspberry Pi 2を 基 に 記 述 していますが Raspberry Pi でも 同 様 に 利 用 可 能 です V-Sido CONNECT Web APIの 詳 細 は V-Sido 開 発 者 支 援 サイト V- Sido Developer で 公 開 しているドキュメントをご 確 認 ください (https://v-sido-developer.com/learning/connect/v-sido-connectweb-api/) 3
1-2. 使 用 する 機 材 など Raspberry Pi 2 V-Sido CONNECT RC GR-001 その 他 に 必 要 な 機 材 ソフトウェア 開 発 用 パソコン(Windows Mac OSなど) 無 線 LANアクセスポイント UART 通 信 できる 導 線 (ジャンパー 線 ) 3 本 テキストエディタ( メモ 帳 など) ロボット 制 御 プログラム VSidoConn4Rasp2 ( 入 手 方 法 は 後 述 ) Raspberry Pi 2 関 連 の 機 材 4
1-3. 各 機 器 の 接 続 イメージ Rasberry Pi 2 V-Sido CONNECT RC Wi-Fi UART 無 線 LAN アクセス ポイント RS-485ケーブル Wi-Fi 開 発 用 パソコン GR-001 5
1-4. JavaScriptによる 開 発 環 境 の 概 略 開 発 用 パソコン Raspberry Pi 2 Sample.html WebSocket WebSocketの サーバ 制 御 コマンドなど JavaScriptなどで ロボットの 動 きを コーディング アスラテックが 公 開 している VSidoConn4Rasp2 をイ ンストール 6
2. Raspberry Pi 2を 利 用 する 手 順 7
2-1. Raspberry Pi 2の 環 境 について この 記 事 では Raspberry Pi 2で 下 記 の 設 定 が 行 われていることを 前 提 に 解 説 を 進 めます OSは Raspbian を 利 用 ( 記 事 は2015-02-16-raspbian-wheezyで 検 証 ) 開 発 用 パソコンと 同 一 LANに 接 続 インターネットに 接 続 済 み Raspberry Pi 2へのOSのインストール 方 法 Raspberry Piそのものの 使 い 方 設 定 などは 本 マニュアルでのサポート 外 となります また 本 マニュアルでは Raspberry Pi 2のIPアドレスは 192.168.11.8 が 割 り 当 てられているものとして 解 説 を 進 めています Raspberry Pi 2のIPアド レスは 適 宜 ご 利 用 の 環 境 に 合 わせて 読 み 替 えてください Raspberry Pi 2 用 の 機 材 など microsdカード(raspbianの 起 動 用 ) USBキーボード HDMI 対 応 モニター+HDMIケーブル Micro USBケーブル( 電 源 供 給 用 ) Raspberry Pi 用 Linux OS Raspbian 8
2-2. 各 機 器 との 配 線 1 GR-001の 電 源 ハブとV-Sido CONNECTをRS-485ケーブルで 接 続 2 V-Sido CONNECTとRaspberry Pi 2を 下 図 のように3 本 のジャンパー 線 で 接 続 (GNDが1 本 Tx Rxが2 本 ) GR-001の 電 源 ハブに 接 続 事 前 にV-Sido CONNECTにピンソケットをはんだ 付 けするなどして ケーブルを 取 り 扱 いしやすいようにしてください 9
2-3. ロボット 制 御 プログラムのインストール Raspberry Pi 2に ロボットを 制 御 するためのプログラム VSidoConn4Rasp2 を インストールします このプログラムはアスラテックが 提 供 しており 下 記 のコマン ドをRaspberry Pi 2で 実 行 すれば インストールが 行 われます wget --no-check-certificate -O - https://asratec.github.io/vsidoconn4rasp2/install.sh sudo sh VSidoConn4Rasp2をインストールすることで 開 発 者 はシリアルコマンドを 直 接 作 成 することなく JavaScriptでロボットを 制 御 できるようになります インストール 後 次 のコマンドを 実 行 してRaspberry Pi 2を 再 起 動 します sudo reboot Raspberry Pi 2を 再 起 動 したあと ロボットの 電 源 をOnにします(V-Sido CONNECTのLEDが 点 滅 して GR-001が 初 期 姿 勢 を 取 ります) 10
2-4. サンプルプログラムで 動 作 を 確 認 する Raspberry Pi 2にインストールしたVSidoConn4Rasp2(V-Sido CONNECT Web API)には サンプルプログラムが 用 意 されています 下 記 のURLでアクセスできるので 開 発 用 パソコンのWebブラウザでアクセスして ロボットの 動 作 を 確 認 してください http://192.168.11.8:8088 http://192.168.11.8:8089 なお IPアドレスは 適 宜 ご 利 用 のRapberrry Pi 2のIPアドレスに 読 み 替 えてくだ さい また ポート 番 号 も8088と8089の2 種 類 あるので 注 意 してください 11
3. JavaScriptによるロボット 開 発 入 門 12
3-1. ロボットの 制 御 について V-Sido CONNECT Web APIを 使 ったロボットの 制 御 には 次 の2つを 使 用 します HTML ロボットを 操 作 する ためのUI 作 成 JavaScript ロボットを 制 御 する ためのコード <!DOCTYPE html> <html> <head> <meta content="text/html;charset=shift_jis"> <title> 頭 を 動 かす</title> <script src="http://192.168.11.8:8088/ip2/js/vsido.web.js"></script> <script> var vsido = new VSidoWeb({"ip":"192.168.11.8"}); 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> 13
3-2. HTML&JavaScriptの 作 成 手 順 1 開 発 用 パソコン 上 でテキストエディタを 用 い 任 意 の.html 拡 張 子 のファイルを 作 成 します(たとえばindex.htmlなど) 2 ロボットを 制 御 するためのコードを 記 述 します サンプルコードとして 次 ペー ジ 以 降 に3 種 類 の 動 作 を 用 意 しましたので このいずれかの 内 容 をコピーして 先 ほど1で 作 成 したファイルにペーストしてください 3-3. 目 標 角 制 御 のサンプルコード 3-4. 逆 運 動 の 利 用 のサンプルコード 3-5. ロボットの 歩 行 のサンプルコード 3 2のサンプルコードに 記 述 されているVSidoWebのIPアドレスを 適 切 なIPアド レス(ご 利 用 の 環 境 でのRasberry Pi 2のIPアドレス)に 変 更 し UTF-8 形 式 で 保 存 します 14
3-3. 目 標 角 制 御 のサンプルコード <!DOCTYPE html> <html> <head> <meta content="text/html;charset=shift_jis"> <title> 頭 を 動 かす</title> <! 必 須 :ロボットの 制 御 をするためのライブラリ 妥 当 するIPに 編 集 してください --> <script src="http://192.168.11.8:8088/ip2/js/vsido.web.js"></script> <script> var vsido = new VSidoWeb({"ip":"192.168.11.8"}); /* 妥 当 する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> 15
3-4. 逆 運 動 の 利 用 のサンプルコード <!DOCTYPE html> <html> <head> <meta content="text/html;charset=shift_jis"> <title> 右 手 を 手 前 に 出 す</title> <! 必 須 :ロボットの 制 御 をするためのライブラリ 妥 当 するIPに 編 集 してください --> <script src="http://192.168.11.8:8088/ip2/js/vsido.web.js"></script> <script> var vsido = new VSidoWeb({"ip":"192.168.11.8"}); /* 妥 当 する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> 16
3-5. ロボットの 歩 行 のサンプルコード <!DOCTYPE html> <html> <head> <meta content="text/html;charset=shift_jis"> <title>ロボットを 前 へ 歩 かせる</title> <! 必 須 :ロボットの 制 御 をするためのライブラリ 妥 当 するIPに 編 集 してください --> <script src="http://192.168.11.8:8088/ip2/js/vsido.web.js"></script> <script> var vsido = new VSidoWeb({"ip":"192.168.11.8"}); /* 妥 当 する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> 17
3-6. ロボットの 操 作 手 順 1 2 3 ロボットの 電 源 をONにして Raspberry Pi 2 起 動 完 了 まで 待 ちます 3-2で 作 成 したファイルをダブルクリックして Webブラウザで 開 きます (ダブルクリックで 開 かなかった 場 合 直 接 Webブラウザへドラッグ&ド ロップします) Webブラウザ 上 でUIを 操 作 し ロボットの 操 作 を 行 います 18
3-7. さらなるプログラミングに 向 けて V-Sido CONNECT Web APIの 仕 様 書 を 参 照 するなどして 適 宜 サンプル コードをカスタマイズしたり オリジナルのコードを 作 成 してください ( https://v-sido-developer.com/learning/connect/v-sido-connectweb-api/) V-Sido CONNECT Web APIには USBカメラ 用 のAPIも 用 意 されており Raspberry Pi 2にUSBカメラを 接 続 して 利 用 することも 可 能 です(USB 接 続 カメラ 以 外 に Raspberry Pi 用 カメラモジュールにも 対 応 ) 開 発 者 向 けの 情 報 は V-Sido 開 発 者 支 援 サイト V-Sido Developer で 公 開 しています フォーラムもありますので 不 明 点 などがありましたら そち らもご 確 認 ください https://v-sido-developer.com/ 19
記 載 された 社 名 製 品 名 は 一 般 に 各 社 の 商 標 または 登 録 商 標 です V-Sido CONNECT RC Raspberry Pi 2との 連 係 方 法 Ver. 0.9 アスラテック 株 式 会 社 106-0032 東 京 都 港 区 六 本 木 2-4-5 公 開 日 :150526 20