Desktop Stationさんが作っているDCCコマンドステーションDSair2のWebAppがアップデートされ、新たにティーチング機能が追加されたので、少し遊んでみました。
ティーチング機能とは
ティーチング機能については、以下の公式ブログ(?)の記事を見ていただくのが一番かと思います。
簡単に言うと、DCC対応車両に対する操作(走行方向、速度、ファンクション)やDCCアクセサリ(ポイントや信号など)に対する操作を記録し、後で再生することができる機能です。
操作した内容はテキストベースのスクリプトの形で記録され、ブラウザに保存されるだけでなく、PCにファイルとして保存、あるいはPCのファイルから読み込みができます。スクリプトはテキストエディタで編集可能なので、オフラインで任意の操作を追加、削除することもできます。
つまりDCC対応環境があれば、追加のコストなしに簡単な自動運転を実現することができるのです。
できること、できないこと
自動運転といっても、ティーチング機能にはいくつかの制約があります。
ティーチング機能はあくまでも操作を記録するものなので、ティーチング開始時の操作対象の列車の走行方向、速度、ファンクション状態、ポイントや信号の初期状態については記録されません。
また操作のサンプリングも250ms単位ですので、正確なタイミングの操作を再現したり、列車の停止位置を完全に合わせるなど、高い精度を要求される操作には向いていません。
ブラウザ上で複数のタブを開くことで複数列車の運転も可能ですが、タブ間のスクリプトの同期機構などはないので、複数列車を連携させるような自動運転は難易度が高いと思います(未検証)。
シナリオを考える
さて、ティーチング機能を使った自動運転で遊ぶには、事前に運転シナリオを考える必要があります。
複数列車であれば駅での行き違いがよくあるパターンですが、今回は一列車に対する操作となるので、駅の出発、到着だけでなく、方向転換を含めることで変化をもたせることを考えます。
本当は機関車けん引の列車で機回しなどできるとよいのですが、残念ながらDCCで連結器の解結が制御できる車両を持ち合わせていないので、2両編成の気動車(DMU - Class 150/2)を使って、以下のような順でレイアウト上を走るシナリオにしました。駅には全部で3つのプラットフォームがあるので、ポイント操作を入れてすべてのプラットフォームを使うようにしてあります。
- 1番プラットフォームから左回りで出発
- 1周して2番プラットフォームに到着したら、進行方向を変え、右回りで出発
- 1周して3番プラットフォームを通過
- 1周して2番プラットフォームに到着したら、進行方向を変え、再び左回りで出発
- 1周して1番プラットフォームに到着
ティーチング機能で作ったスクリプトは基本的にループ実行されるので、最終的に列車が開始位置に戻ってくるようなシナリオにすれば、理論上は永久に繰り返し走らせることができます(実際は停止位置に誤差が出てくるので難しいですが...)。
文字ではわかりづらいと思うので、上記シナリオを実行したときの駅の様子を早回しでどうぞ!
DSair2のティーチング遊び。スクリプトを調整しつつ、撮影に入りました。相変わらず見せるのが難しいですが、駅構内を撮影したものを早回し(x8)するとこんな感じ。左のプラットフォームから出発して、行きつ戻りつして同じプラットフォームに戻ってくる、5分程度のデモです。 pic.twitter.com/zPqEoYqcn9
— じょばんに (@Giovanni_Ihatov) 2021年1月24日
スクリプトの調整
シナリオが決まったら、ティーチング機能で操作を記録していきます。ファンクション操作やDCCアクセサリの操作は、多少間違っても後でスクリプトを編集すればよいですが、速度操作に関してはスクリプト編集すると停止位置がずれるので、何度か練習してからティーチング機能を使った方がよいでしょう。
ティーチングが完了したら、そのまま一度スクリプト実行させてみます。操作のサンプリングが250ms単位ということもあり、おそらくティーチングしたときから停止位置などタイミングがずれることになると思います。一旦スクリプトをPCにセーブし、テキストエディタでの編集で列車の走行中の待ち時間(WAIT行)を増減させ、更新したスクリプトをロードしてテストします。これを繰り返して、目的の停止位置で停車するように調整します。列車がシナリオ通りに安定して走るようになったら、DCCアクセサリの操作の追加修正を適宜行います(スクリプト中のDCCアクセサリの指定は、アドレス-1にする必要があることに注意!)。
調整がうまくいかず、スクリプトを途中で中断した場合、再度スクリプトを実施するには、ポイントや信号を初期状態にしておく必要があります。これを簡単にするために、本編のスクリプトとは別に、ポイントや信号を初期状態にリセットするためだけのスクリプトを用意すると効率がよいと思います。
デモ
というわけで、Llancot RailwayにてDSair2を使った自動運転のデモを動画にしてみました。
動画では動きを中心に見せていますが、DCCサウンド機だと複雑な操作をしなくても、発車、停車や速度変化を繰り返しさせるだけでも楽しめると思います。手ぶらで勝手に列車が動いてくれる様は、博物館のレイアウトを見ているようで楽しいです。
DCCコマンドステーションはZ21*1を中心に使っていましたが、手動のときはZ21、自動のときはDSair2のような使い分けをすることになりそうです。