写真は公式ページより
実際に動いている動画はこちら
■きっかけ
興味があってRaspberry Piを買ったはいいものの、電気系が弱くて全く使えない状態でした。
ソフトウエア関係の仕事なので、UNIXサーバに触れることはありますが、lsやcp程度の知識しかありません。
たまたま、PlayStation3のコントローラーで操作するロボットを見る機会があり、自分でも作れるキットがないか探していたところ、これに行き着きました。
見つけた動画
GoPiGo Example: PS3 Controller (by youTube)
これがやりたかった!
■商品の特徴
Dexter社は米ワシントンにある教育、研究者、愛好家向けのロボットを制作しています。
(GoPiGoはKickstarterによる資金集めで、日本でも話題になりました)
GoPiGoはRaspberry Piを使ったコンピュータ教育用の教材を目的として作られているため
- こどもでも簡単に組み立てられる。
- すぐに使える。
- 専門の知識がいらない。
などの特徴があります。
紹介動画でも実際に子供が遊んでいる姿が紹介されています。
GoPiGo3 Robot for Education
また、商品もRaspberry PiやOSの入ったSDカード付のオールインワンパッケージが販売されており、あとは単3電池(8本)を用意すればいいようになっています。
へたれオヤジにはピッタリですね。
最終目標はPS3のコントローラーを使ったラジコンカーを作る事です。
■商品
商品はアマゾンより安い「ロボットショップ」で購入しました。
もっと安いショップも見つけたのですが、不安があって専門ショップにしました。(不幸なことにこの不安は的中しました・・・)
それ以外にも、充電式の単3電池、充電器、外でも使うためのミニルーターなどを購入しました。
購入商品一覧
商品 | ショップ | 金額 |
---|---|---|
GoPiGo3 初心者スターターキット | ロボットショップ | 27,940 |
パナソニック エネループ 単3形充電池 4本パック BK-3MCC/4SA x 2セット | anazon | 2,650 |
パナソニック 急速充電器 単3形・単4形 黒 BQ-CC73AM-K | amazon | 2,049 |
RAVPower Wi-Fi SDカードリーダー RP-WD009 | amazon | ¥5,099 (タイムセール+クーポン) |
Team microSDHCカード 16GB | amazon | 550 |
計 | 38,292 | |
こまごまと買うと、意外とかかるものですね。 | ||
もう少し出せば[これが買えてしまう] | ||
(https://store.dji.com/jp/product/mavic-mini?vid=84651&set_country=JP&gclid=CjwKCAiAqqTuBRBAEiwA7B66hR991-h2lsQAJI9OGVM5HLF8T5vs7knJwGv3eNNFW9_TVCLUg3RKnRoCu6MQAvD_BwE)ぐらい。 |
これ以外に、Raspberry PI用にマウス、キーボード、モニタを用意。
プログラム開発のためにPCが必要です。
■GoPiGo3スターターキットについて
GoPiGo3スターターキットには、**「初心者用」と「上級者用」**があります。
違いはOSが「Dexter OS」か「Raspian for Robots」の違いだけです。
Dexter OSとはRaspian(Stetch Lite)をベースとして、すべてブラウザから操作を行うものです。
OSの仕組みやコマンドなどを知らなくても、画面の操作だけでプログラムが作れる「Bloxter」(Scratchのようなもの)が付いてきます。
今回はこれを購入したのですが、SSHでログインできない(後述)ため、用意されているレッスンを使うことは出来ても、プログラミングには向いていません。
結局、上級者用に提供されているOSイメージをダウンロードして使うことにしました。
上級者用は「Raspian for Robots」で、GoPiGo3に必要なライブラリ類はインストール済みで、SSH接続やVNC接続ができるようになっています。
目的だったPS3コントローラーサンプルもこちらに含まれているので、最初からこちらを購入すればよかったです。
「初心者用」「上級者用」とも、キットの内容は変わりません。
GoPiGo3 スターターキットに含まれるもの
- GoPiGo基本セット(本体)
- Raspberry PI 3B(+ではありません)
- USBメモリカード(8GB)
- サーボセット
- 距離センサーセット
- OSイメージの入ったSDカード(8G)
2~6をバラで買うとスターターキットより高くなるので、余ったRaspberry PIがないのであれば、こちらの方をお勧めします。
ただし、すでにRaspberry PI 3Bを持っていて、あとは、自分でそろえるのであれば、基本セットで十分だと思います。
こちらのほうが断然安い(13,306)ですしね。
■実際の購入
発注時に受付メール、翌日には発送メールが来て翌々日には商品が届きました。(はや!)
(箱の中身)
Dexter OS SDカード(8Gでは少ないので、別の 16GB SDカードにコピーして使用しました)
アクリルパーツに番号が振られていたり、シールが貼られていたりと作りやすくする工夫が随所にされています。
また、部品は機能別のパーツにまとめられており、さらに予備のパーツがどっさり入っていました。(安心ですね)
DEXTERロゴ入りのドライバが付属
ただ、残念なことに作りが雑で、さすがメイドインUSA。こんな曲がったワッシャー(スペーサー?)初めて見ました。
子供向けという事で、多少乱暴に扱ってもいいようにできていると思います。
■組み立て
特に日本語の説明書はないため、Dexter社のサイト(英語)を参考に組み立てることになります。
- チュートリアル&ドキュメンテーション
- 写真たっぷりでわかりやすい組み立て説明
教育向けキットのため、子供でも作れるように配慮されており、組み立ては非常に簡単です。
ただし、Dexter社のサイトの説明と実際の商品内容(特にパーツ類のまとめ方)が違うため、戸惑うこともしばし。
ドキュメントが商品に追い付いていない、よくあるパターンですね。
息子と組み立てましたが、組み立て自体は30分程度でできました。
■(1)初心者オプション(Dexter OS)での接続
ブラウザからのアクセスのみとなります。
手順は簡単。
- 電源をいれる
- しばらく待つ(Wifiランプが緑になるのを待つ)
- PCのWifi接続先一覧にある「GoPiGo」に接続する
- ブラウザが自動的に起動し以下の画面が表示されます。
ブラウザが起動しない場合、手動で起動し、URLに「mygopigo.com」と入力します。
注)InternetExploerの場合、時々ボタンが効かなくなるバグがあります。IE以外を使用してください。
(画面)
5.Driveを選択し、ボタンをクリック
(画面)
GoPiGoが動きます!
まじ感動!
■トラブル1
ここでトラブル発生。
なんと右側のモータが動きません。
接続やケーブルを調べましたが、どうやらモーターが初期不良のようです。
ショップに交換の依頼をしました。
(ショップから交換のために、本体を返送してほしい旨の連絡が来ましたが、急いでいることを伝えたところ、モーターだけ送ってもらうことになりました。(不良部品の返品は不要とのこと)
パーツ販売もしているショップならではの対応でとても助かりました。
■トラブル2
接続のポイントはPCのWifi接続先としてGoPiGoに接続する点です。
実は、GoPiGo3自身がWifiスポットとして機能しており、最初のうちそれが分からず、ずいぶんと悩みました。
また、Raspberry PIの画面をモニタに出し、ログインしようとしたのですが、標準ユーザであるpiのパスワードが分かりません。
さらにルートのパスワードも分からないため、ログインプロンプトから先に進めることができずに困りました。
このBlogを見つけて、Wifiの接続先を変えることに気づき、ようやく画面を出すことができました!
画面が出たところまではよかったのですが、Bloxterの使い方がよく分からないのと、PS3コントローラーのサンプルが見つからなかったので、Dexter OSを使うのはあきらめ、上級者オプション(Raspian for Robots)のセットアップにチャレンジすることにしました。
■(2)上級者オプション(Raspian for Robots)での接続
最初から上級者オプションを購入した場合は、SDカードを挿入して起動します。
ベースキットを購入した場合、OSイメージが入ったSDカードを作る必要があります。
手順
- OSイメージをgitHUBからダウンロードします。
- zipファイルを解凍します。
- SDカードをフォーマットします。
フォーマットはDiskFormat32を使いました。
ここでトラブル。SDカードが書き込めないとエラーになります。
ここを参考にdiskpartコマンドで読み取り属性をクリアしました。 - Win32 Disk Imagerを使って、先ほどのOSイメージを書き込みます。
組み立てる前にWifi設定だけしておきます。
手順
- Raspberry PIにSDカード、マウス、キーボード、モニタを繋げます。
- Raspberry PIに電源を入れます。
- しばらく待つとデスクトップが表示されます。
- デスクトップ画面からWifi接続設定を行います。
GpPiGo3を組み立てます。(組み立て方は先ほどと同じです)
組み立てたら、GoPiGo3の電源を入れて、しばらく待つとWifiランプが白色に光ります。
接続方法として2つあります。
・SSH接続
SSHクライアント(私はTeraTermを使用しました)をインストールし、ログインします。
ホスト名pi@dex.localで接続し、パスワードrobots1234で入ることができます。
・VNC接続
ブラウザで「dex.local」を開いてVNCを選択し、パスワードrobots1234をいれるとデスクトップが表示されます。
ブラウザでVNCができることを知らなったので、ビックリしました。
また、どちらもIPアドレスではなく「dex.local」で接続できるので、IPを調べずにすみます。素晴らしい!
デスクトップのGoPiGo3 Control Panelを起動し、GoPiGo3が動くことを確認します。
■PlayStation3コントローラー接続
組み立てる前に接続設定は済ませておきます。
ここを見ながら設定します。
[PS3 Control with GoPiGo]
(https://www.dexterindustries.com/GoPiGo/projects/python-examples-for-the-raspberry-pi/raspberry-pi-ps3-control-with-gopigo-robot-example/)
設定が済んで、再起動後、PSボタンを押すとbiuetoothの認識は一瞬で終わります。
PlayStation接続と違って、LEDは消えますが、接続しているので、安心してください。
ls /dev/input/js0
があれば、成功です。
■トラブル3
一番やりたかったPS3からのコントロール。
接続設定は済ませていざ実行となった時に、エラー!。かなりがっかりしました。
が、Pythonの勉強ができると気を取り直し、追跡することにしました。
(結果)
PS3コントローラーデータの受信部分がサンプルでは動かないことが判明。(理由は不明ですが)
こちらを参考に受信部分を見直しました。
■ラズパイでラジコン(3):Pythonでdualshock3の入力を読み取る
https://www.usagi1975.com/30jul170722/
また、提供されているサンプルはGoPiGo2用のスクリプトでした。Exampleを見ならがGoPiGo3用に書き直しました。
できたコードは以下の通りです
# !/usr/bin/python3
import struct
import gopigo3
import easygopigo3 as easy
import time
device_path = "/dev/input/js0"
# unsigned long, short, unsigned char, unsigned char
EVENT_FORMAT = "LhBB";
EVENT_SIZE = struct.calcsize(EVENT_FORMAT)
try:
GPG = easy.EasyGoPiGo3()
except Exception as e:
print("GoPiGo3 cannot be instanstited")
print(e)
exit()
with open(device_path, "rb") as device:
event = device.read(EVENT_SIZE)
while event:
(ds3_time, ds3_val, ds3_type, ds3_num) = struct.unpack(EVENT_FORMAT, event)
print( "{0}, {1}, {2}, {3}".format( ds3_time, ds3_val, ds3_type, ds3_num ) )
if ds3_val == 1 and ds3_type== 1 and ds3_num==13:
GPG.forward()
print "F"
if ds3_val == 1 and ds3_type == 1 and ds3_num == 14:
GPG.backward()
print "B"
if ds3_val == 1 and ds3_type == 1 and ds3_num == 16:
GPG.right()
print "R"
if ds3_val == 1 and ds3_type == 1 and ds3_num == 15:
GPG.left()
print "L"
if ds3_val == 1 and ds3_type == 1 and ds3_num == 0:
GPG.stop()
print "STOP"
event = device.read(EVENT_SIZE)
■結論
- GoPiGoは手軽で簡単。ベースキットなら1万円台で手に入ります。
- PS3コントローラーがあれば、ラジコンカーが作れます。
- ある程度のRaspberry PIの知識は必要です。
■参考リソース
GoPiGoについて日本語で書かれているリソースはそれほど多くありません。その分内容が濃くてとても参考になります。参考にしたリソースです。感謝!
<日本語で書かれた記事>
■[ROSでgopigo3を走らせる]
(https://qiita.com/cut0ter/items/0326f5dee89456e47001)
ubuntu mate + rosでGoPiGoを動かしている方です。
■[ラズパイで動くロボット「GoPiGo」をつかって遠隔見守りロボットを作ろう(1) 開発準備編]
(https://codezine.jp/article/detail/9829)
GoPiGoに関して、日本語できちんと書かれた記事はこれくらい?
■[GOPIGOを作ろう]
(http://masaaki1.blogspot.com/2016/10/gopigo.html)
米国のDexter Industriesから直接購入された方のBlogです。
書かれている内容や、やりたいことは私に近くて参考になりました。
■[10さいからはじめる「お絵かきロボット」づくり]
(https://qiita.com/ykoga/items/3362beb26fc640913645)
子供に楽しいロボットの講義をしているテイストが素晴らしい。
■[工作と小物のがらくた部屋 Dexter Industries GoPiGo 組み立て]
(http://junkroom2cyberrobotics.blogspot.com/2016/03/dexter-industries-gopigo.html)
GoPiGoだけでなく、GrovePiも組み立てられている方。すげぇ。
■[GoPiGo2で遊んでみた]
(https://www.slideshare.net/mainya/go-pigo2)
上手にスライドにまとめられている方です。
■[tkamada_の日々]
(https://tkamada.blogspot.com/2015/10/gopigo.html)
赤い基盤はArudinoだそうです。知らなかった。
<Shops>
■[ロボショップ株式会社]
(https://www.robotshop.com/jp/ja/)
米robotshopの日本法人。品揃えが多いのと発送が早いのが素晴らしい
■[GoPiGo3 初心者スターターキット:ロボショップ 店 - 18,829円]
(http://viptoycimall.xyz/index.php?main_page=product_info&products_id=41826)
ベースキットなら1万を切る安さ。パパもう1台買っちゃうゾ!
■[はじめてのロボット・カー開発キットの販売]
(https://spectrum-tech.co.jp/products/robotcar.html)
GoPiGoをシステムとして販売されている会社様です。
目の付け所が良いと思うので、商売になればいいな。
<Dexter Site>
■[GoPiGo3 Tutorials & Documentation]
(https://www.dexterindustries.com/gopigo3-tutorials-documentation/)
ここにリソースがまとめられています。
古いのが難点
■PS3コントローラー
[PS3 Control with GoPiGo]
(https://www.dexterindustries.com/GoPiGo/projects/python-examples-for-the-raspberry-pi/raspberry-pi-ps3-control-with-gopigo-robot-example/)
接続手順はこの通りですが、サンプルは、GoPiGo3では動きません。
■[Assemble the GoPiGo Servo Kit]
(https://www.dexterindustries.com/GoPiGo/get-started-with-the-gopigo3-raspberry-pi-robot/6-attach-the-servo-kit-gopigo3-raspberry-pi-robot/)
実際のキット内容と説明が全然あっていません。早く更新してください。
■[Dexter Industries GoPiGo3 Documentation!]
(https://gopigo3.readthedocs.io/en/master/index.html)
APIドキュメントのようです。
■[Raspberry Pi, Java, and the GoPiGo3 - Part 1: Setting up the GoPiGo3]
(https://www.omnijava.com/2018/05/06/raspberry-pi-java-and-the-gopigo3-part-1-setting-up-the-gopigo3/)
英語のBlogですが、loginに関して丁寧に解説されています。
ここに掲載されたサンプルが実際に同梱されていました。素晴らしい。