旧参戦記のこの記事で、目標は1周1分と言ってから約2ヶ月・・・まだ達成できていません。
以前の走行ビデオでは、1分20秒前後で走行できました。それに比べれば速くはなっていますが、1分5秒を切れないまま5月、6月が過ぎてしまいました。
残り期間を考えて、1周1分以内の目標はちょっと後回しにします。まだ手をつけてない難所走行の開発をこれから行っていきます。
2009年6月21日日曜日
み…見えるぞ!
あいからわずScilab勉強中です。走行ログからグラフを作るのはだいぶ慣れてきました。少しデータを加工してグラフを作るといろいろ見えてくるものがあります。
例えば、これはテストコースの走行ログから、左右のモータ回転角の差をグラフ化したものです。
4,5周分のデータですが、グラフに周期性があります。1周分を拡大してみると
よく見るとグラフには、水平部分、右上がり、右下がりの部分があり、それがコース形状の直線部分、右カーブ、左カーブに対応しているのがわかります。色をつけてみると、ホレこの通り。
さて、NXT走行体は改良が加えられたようなので制御パラメータの計算もそれにあわせた計算が必要になるはずです。制御パラメータの計算を理解できるように勉強を続けます。
例えば、これはテストコースの走行ログから、左右のモータ回転角の差をグラフ化したものです。
4,5周分のデータですが、グラフに周期性があります。1周分を拡大してみると
よく見るとグラフには、水平部分、右上がり、右下がりの部分があり、それがコース形状の直線部分、右カーブ、左カーブに対応しているのがわかります。色をつけてみると、ホレこの通り。
さて、NXT走行体は改良が加えられたようなので制御パラメータの計算もそれにあわせた計算が必要になるはずです。制御パラメータの計算を理解できるように勉強を続けます。
2009年6月17日水曜日
Scilab勉強中
昨年のチャンピオンシップ大会後のワークショップでMATLAB/Simulinkを何チームか使っているという話を聞きました。「たぶん仕事で使っているんだろう・・・うちのチームには縁がないものだなぁ・・・」と聞き流していたんですが、ETロボコンのメーリングリストや技術教育でもMATLAB/Simulinkや制御パラメータに関する質問が頻繁に出てきて、少し勉強して活用できればと思うようになってきてます。
ただしMATLAB/Simulinkを購入できるほど(略)なので、フリーソフトでMATLABと同じことができるScilabを使って制御パラメータ計算やログの解析できるように勉強してます。
制御パラメータ計算は理解するのにもう少しかかりそうです。ログはまずグラフにして見るところからはじめてます。
以下グラフ化の例(ログファイルの1行目は削除しないとエラーが出ます)
// csvファイル読み込み
a = read('test.csv', -1, 12);
// 電圧表示
plot(a(:,1) , a(:,4));
xlabel('Time (ms)');
ylabel('Voltage (mV)');
// save
filename = 'test01'
xs2png(0, filename);
// ファイル読み込み
logdata = read('test.csv', -1, 12);
clf(); // clear
// Light Sensor
subplot(211);
plot(logdata(:,1) , logdata(:,10));
xlabel('Time (ms)');
ylabel('Light Sensor (a.u.)');
subplot(212);
histplot([min(logdata(:,10)):1:max(logdata(:,10))], logdata(:,10));
xlabel('Light Sensor');
ylabel('Histgram');
// save
filename = 'test02'
xs2png(0, filename);
ただしMATLAB/Simulinkを購入できるほど(略)なので、フリーソフトでMATLABと同じことができるScilabを使って制御パラメータ計算やログの解析できるように勉強してます。
制御パラメータ計算は理解するのにもう少しかかりそうです。ログはまずグラフにして見るところからはじめてます。
以下グラフ化の例(ログファイルの1行目は削除しないとエラーが出ます)
// csvファイル読み込み
a = read('test.csv', -1, 12);
// 電圧表示
plot(a(:,1) , a(:,4));
xlabel('Time (ms)');
ylabel('Voltage (mV)');
// save
filename = 'test01'
xs2png(0, filename);
// ファイル読み込み
logdata = read('test.csv', -1, 12);
clf(); // clear
// Light Sensor
subplot(211);
plot(logdata(:,1) , logdata(:,10));
xlabel('Time (ms)');
ylabel('Light Sensor (a.u.)');
subplot(212);
histplot([min(logdata(:,10)):1:max(logdata(:,10))], logdata(:,10));
xlabel('Light Sensor');
ylabel('Histgram');
// save
filename = 'test02'
xs2png(0, filename);
2009年6月14日日曜日
登録:
投稿 (Atom)