PythonでWHILLを動かしてみた
WHILL Advent Calendar 2018 - Adventarの21日目の記事です。
WHILL Model CRのモーターコントローラが返ってきました。経緯はこちら。 モーターコントローラのトランシーバー及びマイコンが故障していたそうです。 原因は、TX/RXとバッテリーのピンが接触し、トランシーバーに定格以上の電圧が加わったためです。 TX/RXとバッテリーのピンは隣にあるので、注意しましょう! WHILLの仕様書はこちらです。 github.com
今日はPythonでWHILL Model CRを動かします。
開発環境
- Windows 10
- Anaconda(Python 3.7)
- pywhill-v_1.0.0
- WHILL Model CR
- USB-RS232C変換ケーブル
- 自作ケーブル
接続ケーブルを準備する
外部機器(PC)からWHILLを動かすには、接続ケーブルを自作する必要があります。
接続ケーブルの作り方はMioさんの記事(接続ケーブルのつくりかた - WHILL Model CRについてのブログ)を参考にしてください。
構成は、PC(USBポート)→ USB - RS232C 変換ケーブル → 自作ケーブル → WHILL になります。
USB - RS232C変換ケーブルはこちらを使用しました。ドライバはここ(USB-CVRS9 のソフト(ドライバ)ダウンロード - サンワサプライ株式会社)にあります。
自作ケーブルの部品はミスミから買いました。送料かからないので超良いです。
- 導線 jp.misumi-ec.com
- コネクタ jp.misumi-ec.com
- ピンコンタクト jp.misumi-ec.com
PCとWHILLを接続ケーブルで繋ぎ、デバイスマネージャーを開き、ポートの設定を下記のようにします。
Pythonのサンプルを動かす
サンプルプログラムがgithubにあるので、ダウンロードします。
github.com
scriptフォルダのwhill.py、whill_data.py、whill_packet.pyをexamplesフォルダにコピペしました。あとはwhill.pyにimport serial
を追記します。serialが見つからなければ、pip install pyserial
でインストールします。
examplesの中に、4つのサンプルがあるので、実行してみましょう。 試しに動かすときは、転倒防止バーの下に角材かなにかを敷いて、タイヤを浮かせて実験します。
cr_example1_joy.py
1秒ごとに少しずつ前進するプログラムです。
cr_example1_joy.pyの11行目、whill = ComWHILL(port='COM4')
のポート番号は、デバイスマネージャーから調べて書きかえてください。
13行目の whill.send_joystick(int(10), int(0))
は、第一引数が前後、第二引数が回転になっており、それぞれ-100~100までの値を入力します。
第一引数:(+)前進、(-)後退
第二引数:(+)右回転、(-)左回転
cr_example1_joy.py#WHILL pic.twitter.com/zlT7ZuvkTY
— 藤本賢志(ガチ本) (@sotongshi) 2018年12月30日
cr_example2_data.py
1秒ごとに加速度、ジャイロ、ジョイスティック、バッテリー、モーターの値を表示するプログラムです。
whill.pyの42行目、self.accelerometer
をself.acceleration
に変更します。
cr_example2_data.pyの21行目、print(whill.accelerometer)
をprint(whill.acceleration)
に変更します。
cr_example3_callback.py
cr_example2_data.pyのコールバック関数を用いたプログラムです。
cr_example3_callback.pyの25行目、print(whill.accelerometer)
をprint(whill.acceleration)
に変更します。
cr_example4_blink_power.py
3秒ごとに電源をオンオフするプログラムです。
cr_example4_blink_power.py#WHILL pic.twitter.com/LITwe3kR6t
— 藤本賢志(ガチ本) (@sotongshi) 2018年12月30日
まとめ
今回、Pythonのサンプルプログラムを用いて、PCからWHILLを動かしてみました。 実際に動くと楽しくなってきますね!(モーターコントローラ治ってよかった...)