GoPiGo3を使ってROS開発してみようかと思い購入してみた。
まずはせっかく既製品を購入したので、そのまま使ってみようかと
購入
GW真っ只中の5/1(火)の昼過ぎに注文
せっかくだったので、
- GoPiGo3 ベースキット
- GoPiGoサーボキット
- Raspberry Pi カメラモジュール v2
- HC-SR04超音波距離計
- Raspberry Pi 3コンピュータボード
の一式購入(税抜きで2万円ちょっとくらい)
購入はRobotShopさんのHPより
(amazonよりも安かったので)
ちなみに、この時に迷ったのが、初心者キットや上級者キット
正直何が違うのかわからなかったが、同じくらいの構成にしようとすると
上級者キットでは1万円ほど高くなる。
翌日の5/2(水)には出荷され、5/3(木)到着
組み立て
5/3(木)から組み立て
ベース部分は多分30分ほどで組み立て完了
Raspberryの組み込み作業になり、microSDが同梱されていないことに
気づき(同梱とも書かれていなかったが)一旦中断
この勢いで、単3乾電池8本とmicroSDを購入に出かける
RaspberryPiセットアップ
とりあえず、ROSのこともあったので、一旦UbuntuMATEで仕込むことにし、
UbuntuMATEのブートSDの作成
UbuntuMATEのダウンロード
UbuntuMATE本家ダウンロードサイトより
以下のように
圧縮ファイルの解凍
自分はMacなんで、xzの解凍用にxyをインストール
brew install xz
SDカードへの書き込み
dd bs=1m if=<イメージファイル名> od=<デバイス名>
デバイス名はdiskutier list
で調べておく
RaspberryPi3の起動
先ほどのmicroSDカードをRaspberriPi3に入れて、電源投入
この時はHDMIケーブルでモニタとの接続及びキーボード、マウスが必要
sshの設定
sudo raspi-config
GoPiGoのインストール
まずはgit
git cloneするために、まずはgitのインストール
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y git
GoPiGoのgit clone
/home/pi/Dexter/GoPiGo3にcloneする事が大切
mkdir Dexter
cd Dexter
sudo git clone http://www.github.com/DexterInd/GoPiGo3.git /home/pi/Dexter/GoPiGo3
GoPiGo3のインストール
sudo bash /home/pi/Dexter/GoPiGo3/Install/install.h
最後に再起動を聞かれる。人によってはハマると書いてる人もいるが、結局再起動するしか
ないので、Yesで問題ない
ここで問題(でも解決はもう少し後)
なんかpythonでeasygopigo3をimportするとエラーになる
I2C_mutexのロードができないとか
はて、前回はこんな事起きた記憶がないのだが
Scratchのインストール
再起動後、または再起動させなかった場合には以下のコマンドでScratchもインストールする
sudo bash /home/pi/Dexter/GoPiGo3/Install/install_scratch.h
問題の解決
ここで、解決
/home/pi/Dexter/lib/Dexter/script_tools
sudo bash ./install_script_tools.sh --install-python-package --use-python3-exe-too --system-wide
/home/pi/Dexter/lib はScratch環境のインストールで作成されるので、それまで待てばOK
自力でビルドしてもいいが、libffi-devのインストールなども必要
ちなみに、デスクトップに作成されたScrachはsudoがないので全然モータが動かなかった
動作確認
git したフォルダにいくつかのサンプルがあるので試してみる。
まずはやっぱりモーター制御
cd /home/pi/Dexter/GoPiGo3/Software/Python/Examples/
sudo python Motor.py
前進と後退を繰り返せばOK
GoPiGo3ボード上のLEDの点灯
サンプルあるのかなぁ
import time
import easygopigo3 as easy
gig = easy.EasyGoPiGo3()
for i range(100):
easy.open_eyes()
time.sleep(0.5)
easy.close_eyes()
easy.open_left_eye()
time.sleep(0.5)
easy.close_eyes()
easy.open_right_eye()
time.sleep(0.5)
easy.close_eyes()
time.sleep(0.5)