*

Ev3開発サポートツール(4)-Pythonによるグラフ表示

公開日: : Python, マインドストーム/EV3, 開発

どもです。
前回のエントリーで、VisualStudioCommunityでのPythonの開発環境の構築について、記載しました。
今回は、構築した環境を用いて実際にグラフを描くツールを作成したので、それを備忘録として記載します。

1.今回作ったもの
今回作成したものは、CSVファイルを解析して、その内容をグラフに表示する、というツールです。

2.CSVフォーマット
まずは、CSVのフォーマットです。
1行は、ヘッダー行です。各列の内容の概要を示す情報を表示します。
列の順番は、下記の通りです。

1.データのインデックス
2.PID制御のP項(左側モーター)
3.PID制御のI項(左側モーター)
4.PID制御のD項(左側モーター)
5.PID制御のP項(右側モーター)
6.PID制御のI項(右側モーター)
7.PID制御のD項(右側モーター)
8.モーター出力指示値(左モーター)
9.モーター出力指示値(右モーター)
10.モーター出力値(左モーター)
11.モーター出力値(右モーター)
12.モーター目標出力値(左モーター)
13.モーター目標出力値(右モーター)
14.距離センサー値
15.距離センサー平均値

3.Pythonのバージョンとかとか
使用している環境は、下記の通りです。
CPU:i7-3770K CPU 3.50GHz
メモリ:16.0GB
OS:Windows7 Professional SP1(64bit)
VisualStudioCommunity2015 Version 14.0
Python:Python 3.6.1 Anaconda 4.4.0 (64bit)

4.使用するライブラリ
今回作成したツールでは、CSVを読み込んでグラフに表示する、という順番で処理を実行します。
この処理を実現するためには、pythonに用意されている豊富なライブラリを使用します。
pythonでCSVを読み込むためには「pandas」を、グラフの表示のためには「matlibplot」をそれぞれ使用します。

5.グラフの分割
グラフは、2つのウィンドウに分割します。
1つはPID制御の各項の値を表示します。
もう1つは、各モーターの出力値、動作値、および目標指示値を表示します。
ここで、1つ目のウィンドウではP項/I項/D項を別々のグラフに、2つ目のグラフでは、右モーターと左モーターの値をそれぞれ別々のグラフに表示します。

6.コード
実際に実装したコードは、以下の通りです。

先頭の行にも記載していますが、文字コードをShift-JISに指定しています。
これは、VisualStudioのデフォルトの文字コードが「Shift-JIS」だからです。

で。
実際に作成したグラフが、コレ。
PID制御の各値
モーター出力値

いい具合に、期待するグラフが表示されました。

以上、今回はグラフを表示するためのツールをpythonで作ってみました。
今後は、このツールを用いて振舞いの解析をしていきます。

ではっ!

関連記事

toppers

C言語でEV3開発(20)-超音波センサと安全状態

どもです。 前回は、BluetoothでPCとEv3を接続してコマンドの送受信について書きました。

記事を読む

raspberry-pi

libpigpioでのRaspberryPi3とArduinoのSPI通信

どもです。 今回は、libpigpioを使用してRaspberryPi3とArduinoでSPI通

記事を読む

Arduino_Logo

Arduino nano(中華版)をセットアップしてみた

どもです。 突然ですが、「Arduino nano」互換(なのか?)の中華ボードを手に入れました。

記事を読む

google_test

C言語でEV3開発(6)

どもです。 今回のエントリーは、前回のエントリーの続き、google testでの単体テスト環境に

記事を読む

toppers

C言語でEV3開発(18)-モードの遷移の設計-コマンド通信処理の準備

 どもです。  今回は、前回紹介したEv3とBluetoothで通信する機能を

記事を読む

toppers

C言語でEV3開発(28)-EV3の移動距離を計算できるようにしてみた

どもです。 今回は、Ev3の移動距離の算出についてです。 1.算出方法について 移動距離は

記事を読む

eclipse-juno-logo

C言語でEV3開発(1)

どもです。 2回目の投稿。 本格的な投稿としては、初めての投稿になります。 内容は、LEG

記事を読む

toppers

C言語でEV3開発(26)-EV3で機械学習(1)-QLearningをC#に委譲してみた

どもです。 前回の投稿では、Q-LearningをEV3本体に実装してみたら、メモリが足りなくて動

記事を読む

RasPi_Qt

QtでRaspberryPi/GUI開発(10)-SPI通信をしてみた(その2)

どもです。 えー。 「Qtで…」とか書いておきながら、今回もやっぱりQtは出てきません。

記事を読む

Arduino_Logo

1台のarduinno nanoで割込みとSPIの同時使用

どもです。 先日手に入れたArduino nano(中華)で遊んでいます。 今回、この1台のAr

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

RasPi_Qt
QtでRaspberryPi/GUI開発(12)-gpioの状態をGUIに反映する

どもです。 今回は、gpioピンの状態(HIGH/LOW)の変化を画

raspberry-pi
RaspberryPi起動時にpigpiodがスタートしないようにする

どもです。 これまでpigpioを使用してRaspberryPiから

no image
自宅で電子工作(1):ブレッドボードでの配線を省略する

どもです。 突然ですが、電子工作を始めてみました。 1.背

Arduino_Logo
ホールセンサーの種類と使い方(割込み編)

どもです。 前回に引き続き、今回もホールセンサーについてです。

Arduino_Logo
ホールセンサーの種類と使い方

どもです。 今回のエントリは、表題にある「ホールセンサー」についてで

→もっと見る

PAGE TOP ↑