2015年5月25日月曜日

Pi:Co杯プレ大会

参加し,予定通りリタイヤして終了.会場でフォトセンサのキャリブレーションをせずとも走っていたのでプレゼンした通り外乱光には打ち勝つことができたと思います.

Pi:Coは無償で提供してもらっていますが,某社は今回の技術レポートですでに十分元をとっていて一人勝ち状態ですね.

皆でさんざんダメだしをしたのでPi:Coもバージョンアップされることでしょう.でもそうすると,せっかく1ヶ月以上かけて構築したフォトセンサプログラムが不要に...

SH-7125はメモリが8kByteしかなく,32x32用のプログラムはそのままのらないので16x16に変えて移植したつもりでしたが,これにバグがある模様.せっかくの機会なので探索アルゴリズムを見直して整理しようと思います.

2015年5月22日金曜日

Pi:Co杯プレ大会準備状況

大会の時間や場所の情報が来ない...と思っていたらこんなところに情報が.なるほど,とりあえず13:00ですね.

ムリムリ詐欺の常習犯という扱いをされているが,今回は本当に無理.モチベーションも低いですし.

一方,発表についてはしっかり準備してしまった.フォトセンサについてソフトでめんどくさい補正をしていることを話す予定.

2015年5月11日月曜日

バグ発見!

ちょっとモータ出力について検討しているときに以前のソースファイルを確認すると...2で除すというなぞの演算式を見つけた.理論式にはない演算である.どうやらこれは間違いのようで,モータトルクに関するフィードフォワード項では理論値の2倍のdutyを与えていたようだ.

いつから?と思い過去のソースファイルを確認すると,4年前こじまうす7のときからであった.

とはいえ,実害はない.フィードフォワード項に含まれるモータの抵抗値はパラメータとして実走行に合わせて調整しており,打ち消されるからである.以前から,テスターで計った抵抗値より低い値を与えるのは気持ち悪いとは思っていた.バグだったか.

Pi:CoはフォトセンサのLED位置を接着剤でfixしているところ.今週末にでもフォトトラもfixし,センサテーブルを作成予定.プレ大会では完走はもちろん無理.ちゃんと走らせようと思うとそんなに簡単に扱えるハードウェアではない.

2015年4月12日日曜日

フォトセンサテーブル改

以前作成したフォトセンサテーブルは変な挙動を示しているが,その後,フォトトランジスタの立ち上がりに依存するタイミングは避けた方がよいことハイパスフィルタを有するにもかかわらず外乱光の強度によって出力が変化することについて検討した.

問題は二点である.一つは外乱光強度に依存して立ち上がり時間が変化すると同時にハイパスフィルタにより減衰が進むことである.これに対してはピークホールドが有効に働くと思われるので,連続的にA/D変換を実行しソフトウェアで出力のピークをとれば良いと考えられる.立ち上がりが遅いときにも対応できるように連続的に20回A/D変換を繰り返し,その最大値を採用するようにした.20回のサンプリングに要する時間は60usであり,Pi:Coの場合はこれくらいが必要十分な時間となるようである.これによって安定度は格段に向上した.

もう一点は,直感で光軸合わせをした場合には反射光強度が強すぎて壁が近いときに飽和することである.これに対しては,光軸をわざとずらした.指向性の高いLED,フォトトラなのでなかなか簡単ではないが,適当な角度差にするとほどよい受光強度になる.

かなり時間がかかったが,ようやく使えそうな状態になってきた.結果今までの対数近似でほぼ大丈夫そうな特性になった.図中の緑のラインは2次関数+対数関数で近似した結果である.
dw = a0 + a1 s + a2 s2 + a3 ln(s)

2015年4月5日日曜日

PC不調

普段の作業はデスクトップPC,外へ行くときはvaio pro 11を使っているが,vaioさんの調子がすこぶる悪い.

昨年に台湾から帰る空港ではじめて発症した内蔵SSD認識できない病である.このディスクは元のWindowsさんには立ち退いていただいてLinuxに完全に入れ替えており,これが原因の可能性を完全には否定できないが,今回はBIOSが認識していないのでおそらく関係なく,わりとお手上げ状態である.これまでは認識しないことがあるという程度であったので地区大会や全日本大会でも問題にはならなかったが,今日はごくまれに認識することがあるもののOS起動完了までに読み取りエラーが出るというバックアップもとれない状態になってしまった.

というわけで,ついカッとなって裏蓋をはずした.軽量PCなのではずすのは厄介かと思ったが,ねじ9本はずせばパカッととれる.メンテナンスはかなりしやすいようだ.すばらしい.

右下にある長細い板がSSDであり,こいつがダメになっているのなら同規格のものを購入して換装ということになるが,とりあえず一度はずして特に何もせずつけなおした.

何か(Sタイマー?)がリセットされたのか接触不良だったのかわからないが,今のところ確実に起動するようになった.しばらく様子を見よう.

2015年4月3日金曜日

フォトセンサ回路

最近Pi:Coのフォトセンサをうまく使えなくて試行錯誤している.

今日はフォトセンサ回路について考える.Pi:Coのフォトセンサ回路について書くのはあまりおもしろくないので,BasicMouseのフォトセンサ回路がいかにすぐれているかを考える.実は昔説明文章を書いたことがあるらしい.その説明が正しいかどうかは知らない.

今改めて考えると,すぐれているのは「強力パルス発光」と「ピークホールド機能」である.

前回はフォトセンサの特性に触れたが,これを考慮するとハイパスフィルタ付きのフォトセンサを外乱光のある場で使うと次の図のような出力が得られるだろう.すなわち,周囲の明るさと壁との距離(反射光の強さ)で立ち上がりの速さが決まり,壁との距離で出力の極大値が決まる.ハイパスフィルタの影響で初期値は0であり,立ち上がり遅れの後は時間とともに出力が低下する.

この場合,外乱光の影響を避けるには,外乱光の強さに比べ十分強い反射光を得ること,出力のピーク値をA/D変換すればよいことがわかる.BasicMouseの回路は,パルス状にはLEDに5Vをそのままかけ大電流を流せるものの,定常的には電流が制限される比較的安全な構成になっている.そのため,ソフトウェアにバグによる回路破壊のリスクを避けつつ非常に強い発光をさせられる.また,ピークホールド回路のおかげで十分遅い時間にサンプリングすれば立ち上がり時間が多少異なっても影響を受けない.

知識のないときにはまねするしかないのでまねていたが,今思えば偉大であった.

2015年4月1日水曜日

Saturation of photo sensor

I put my photo sensor characteristics on the previous blog post. The curve shows that sensor output around 600 does not change with distance to wall. I have believed that this characteristics is caused by the geometry of emitter and detector because the parallel distance of them is relatively long.

When I wrote the answer in the comments, I came up with another possibility. Schematic of photo sensor response is shown below. In general, response of photo transistor is slow and it changes with light intensity. More intensity the received light is, faster the rising speed becomes.

When the sampling timing of A/D is set to B in the figure, A/D value is not affected by the response time. On the other hand, sampling is performed at timing A, A/D value is determined by the response speed. There is an advantage to sample at timing A, because saturation of current or output of opamp is avoidable owing to its low photo current. However, the response speed also saturates for very high intensity of light. This effect may cause the low sensitive curve in my photo sensor.

If this is true, the easiest solution is to change the value of register, but, anyway, I cannot change it by the rule for Pi:Co in this year.