[表紙頁]へ  関連記事の目次へ
[151012]

自動運転システムを、験してみた:其の三

一応、電源の方は準備出来たので、手直ししておいたVB6プログラムを、Eee PC 4Gに載せて走らせて、そいつで電車を走らせてみた。
(どちらも、“走る”が使えるから、何とも妙。日本語が貧弱なのか、それとも意味が深いのか?)

結果は、定性的には成功だが、定量的には未成功だった。
つまり、“大凡の動き”は希望・期待通りだったのだが、“位置の正確さ”についてはまるっきりダメ!ってこと。

図1は、プログラムで作った画面上の操作卓で、図2<クリック>は、記憶−再生を実験した動画だが、“折り返し地点”がバラバラ!
電車は、毎回ちょうど手前正面で“折り返し運転”をさせたつもりなのに。
手操作で「記憶」させたから、あまり正確ではなかったのだが、それにしても「再生」した時の“折り返し地点のズレ”は甚だしい!
「記憶データ」は、テキストで保存する方式にしたのだが、これは、後で適当に修正が出来るメリットを考えたから。
それ(“ソフト的なズレ”)を手直ししてみたが、やはり、“ハード的・機械的なズレ”は起きるべくして起きるようだ。
これを、どうやって実用的な状態にまで追い込むか?あるいは、とても無理なのか?...(やって見なきゃあ、分からない?笑)
−−−−−−−−−−−−−−−−−−−−−−−−−
プログラムの改良・増設
当初のVB6プログラムに色々付け加えて、今回のが出来たのだが、(知識が欠けていて)プログラミング方法が分からない処が多かった。(図1)
手持ちのハンドブックには、違った分野、解説ばかりしかなくて役に立たず、やはりネットのお世話になった。(感謝!)
だが、それで気が付いたことは、余程“自分のしたいこと|欲しいこと”を巧く表現して検索しないと、なかなか“適した答え”と出会えない|が見出せないことだ。

例えば、左の図3&図4(<クリック>)の横一列は「行」になっているのだが、“この行を、三つの数字群に分けたい場合”どんな方法があるか?と尋ねても、なかなか欲しいものが見付からず。
最後は、ある別の用途のプログラム例の中に、それとなく入っていた「split」というコマンドを見掛けて、それを使ってみたら上手く行った...という例などだ。
幾つかは問わずに分離するには、Buff()側の容量次第で、
   Buff = Split(LBuff, ",") ・・・ (,で分離)
それぞれを取り出すには、
   1st = Buff(0) ・・・ (走行/停止)
   2nd = Buff(1) ・・・ (速度指定値 ±は走行方向指定)
   3rd = Buff(2) ・・・ (継続時間)
とすれば良いようだ。
(要は、プログラミングとは、転がっている情報の発見と利用・工夫の組み合わせではないかと思うことも。苦笑)

で、この「記憶ファイル」は、どれだけ長いものが作れるか?というと、実は、不明!
多分、メモリ容量で制限されると思うのだが、確認はしていない。
実際には、そんな複雑で長時間のモードは、実用上意味が無いだろうと思っている。多分、見ていても、飽きが来る!かも?(笑)

記憶再現性の問題
実際に走らせてみて、“正確な記憶再生”がどれだけ難しいかが良く分かった!
第一に、車両群の向きによって、走り方が変るらしいこと。
また、1両で走らせる場合と、2両で走らせる場合とで微妙に違いが出て来る。(図5)

レールの継ぎ目での“速度の落ち”が、その時々で変っている。(図6<クリック>
これは、「空中線路」であるために、レール全体が撓り、継ぎ目の部分での「導通」が変化することにも関係するようだ。

そうしたことを色々考えると、決めた位置で車両をピタリと停めるような「再現性の良い再生」は、(こんな無手勝流では)殆ど不可能なような気がして来た。
このプログラムだけで、車両を駅の中央でピタリと停めたかったのだが、やはり難しそう!別の手=例えば、車両検出信号を作る&受け取る方法などを考えないとダメかもなぁ。

その検出信号を、音・オーディオ入力にして取り込めば、処理は出来るはずだが。それは今後の課題!?

[表紙頁]へ  関連記事の目次へ