2007/4/25

ゆゆぽん☆退避/追越列車とか作っちゃうかMona-(2)−課題一覧  VRMスクリプト禅問答
<<前回へ

“退避/追越列車”と一言でいうと簡単そうですが、実はこれはいくつかの自動運転系の課題の組み合わせになります。試みに列挙してみましょう。

(1)ある編成が駅に進入した際、追越列車は通過線に、退避列車は退避線にそれぞれ送り込む、ポイント自動制御の仕組みが要る。
(2)退避/追越列車に出発の可否を伝えるのは当然信号機であり、したがって信号自動制御の仕組みが要る。
(3)退避列車を待たせるには、優先列車が先に出発しある程度駅から離れたことを確認しなければならない。つまり、編成走行位置把握の仕組みが要る。
(4)列車が信号を無視して走行した場合、これに対して何らかの措置を講じないと運転が破綻する。したがって、現実の鉄道でいうところのATSに相当する保安機構の仕組みが要る。

大雑把に言うと以上です。“大雑把”と言うのには理由があって、上記の4つそれぞれもまた、より細かい課題に分解することが出来ます。分解してみましょう。

(1)ポイント自動制御
 (1)-1 追越列車と退避列車を判別する。
 (1)-2 (1)-1の結果に従ってポイントを切り換える。
(2)信号自動制御
 (2)-1 信号をどの色にすべきか判別する。
 (2)-2 (2)-1の結果に従って信号灯火を切り換える。
(3)編成走行位置把握
 (3)-1 経路をいくつかの区間(閉塞区間)に分けて考える。
 (3)-2 編成が、区間に進入したことを判別する。
 (3)-3 編成が、区間を通過したことを判別する。
 (3)-4 (3)-2,3の情報を、外部(他のオブジェクト)から参照する。
(4)ATSに相当する保安機構
 (4)-1 (2)(3)によって設定される信号の灯火色を調べる。
 (4)-2 信号の灯火色から、とるべき行動(進行/減速/停止)を判別する。
 (4)-3 実際に編成の速度を変えて信号を守らせる。

と、こんな感じでしょうか。概ねコレが今回の連載の目次に相当すると思っていただいて構いません(実際には重複する部分があり、行ったり来たりすることになります)。

そして、上記の分解した課題は、さらに複数のVRMスクリプト命令に分解されます。言い換えると、今回の連載の目標は、これら列挙した課題を、どのようにVRMスクリプト命令で記述するか、実際に演習問題としてやってみる、ということに尽きます。

*     *     *

ちなみに、大きな課題(ユーザーとしてやってみたいこと)を小さな課題(独立した仕組み=ロジックとして抽出可能な区切り)に分解し、さらに複数のVRMスクリプト命令にまで分解する、という一連の流れは、VRMスクリプトで何かをしようとする場合に共通する考え方です。

今回のテーマ“退避/追越列車”自体には興味がない方も、このような考え方を参考に、銘々の課題に挑戦していただければ、と思います。傍から見ていると、たとえばボクのように何でもスクリプトで書ける人間は、何をするにも最初から答えを知っているように見えるかも知れませんが、そんなワケはありません。常にこういう論理の分解をやっているだけなんです。

これまでネットVRM界隈を眺めて来た感想として、VRMスクリプトがわからない、あるいはそれを通り越してVRMスクリプトなんか要らない、と主張する方は、大抵、この論理の分解を面倒臭がって、短兵急に結果だけを欲しがる人です。これは、姿勢の問題であって能力の問題ではありません。つまり、少しの忍耐を覚悟してコツさえ掴めば、あなたにだって出来る、ということです。

次回へ>>
0

コメントを書く

この記事にはコメントを投稿できません




teacup.ブログ “AutoPage”
AutoPage最新お知らせ