PythonでLEGOロボットをうごかす - HondaLab/Robot-Intelligence GitHub Wiki
LEGO(EV3)には,様々なセンサーやモーターを簡単に接続できます. それらのデバイスをPythonという汎用プログラミング言語で制御できる環境も整っています.
センサーによるデータの収集や,IoTの一例を手軽に体験できます. Pythonによって実際に,センサー値を読み出したり,モーターをうごかしたりできるので, 目に見えるプログラミング入門の練習台としても適しています.
プログラミング言語Pythonの文法については,Pythonの基礎も参考にしてください.
すこし具体的にはOS:ev3devには python-ev3devというパッケージが含まれており、これを使って モーターやセンサーを簡単に利用できます. ここにそれらの一例を示します.
入力(センサー)と出力(モーターなど)
出力系プログラム例:
入力系プログラム例:
ここに挙げた例だけでも,入力系が4種類と,出力系が3種類あります. 単純に組み合わせただけでも,4x3=12種類の,入力-->出力の組み合わせが考えられます. 複数入力 --> 複数出力ももちろん可能なので,感覚運動写像の可能性は無限に広がりそうです.
Jupyter Notebook
sshでLEGOロボットに直接ログインしてPythonプログラムを実行する方法もありますが,Jupyter Notebookを使うと ブラウザから簡単にプログラミングできます.ただし直接ログインする方法よりも動作が緩慢になります.
ロボットのIPアドレスが10.42.0.3(usb LANを使った場合)のとき,ブラウザから
http:10.42.0.3:8888
をアクセスすると,下記のようなJupyter NotebookのHome画面が表示されます.
Jupyter Notebookをより詳しく.
世界いち単純な感覚運動写像アルゴリズム
複雑な処理は関数を定義して,ひとまとめのシンボルにすると,アルゴリズムの見通しがよくなります.
下記に,超音波センサーの値が300mm以下になったら1秒間方向転換するアルゴリズムを図に示します. mLrunという関数を使っています.
mRrunという関数もmLrunという関数と同様に定義できます.
プログラミングってなに?
アルゴリズムをコンピュータのなかで動作できるように具体化したものがプログラムです. プログラムをつくることをプログラミングと言います. そこでは,「変数」や「関数」などの,数学で学んできた概念が役立ちます.
変数に対して演算をしたり,関数を使って命令を実行することをプログラムと言い換えることもできます. しかし,ただ「命令を実行」するだけでは複雑なことはできません. 目的を正しく果たすプログラムを作るためには,「繰り返し」と「条件分岐」をつかってそれらの命令に 構造をもたせる必要があります. プログラミングの基本的な考え方についてのページも参考にしてください.
実行例動画
レポートの書き方
科学・技術に関するレポートや論文はLaTeXを用いて書くと効率よく書けます. 式や図表の相互引用や,参考文献の引用番号なども自動的に行ってくれる機能を 備えているからです. 参考:レポート・論文の基本構成
参考
- https://ev3dev-lang.readthedocs.io/projects/python-ev3dev/en/stable/index.html
- https://qiita.com/haneuma/items/a301186d832beee639d0
- 公式マニュアル:https://media.readthedocs.org/pdf/python-ev3dev/latest/python-ev3dev.pdf
- EV3 Python :https://sites.google.com/site/ev3python/learn_ev3_python/
- ロボティクス入門ゼミ:http://yakushi.shinshu-u.ac.jp/robotics/?EV3
LEGO robot noteにもどる