AIを使ってDSairLite用の自動運転スクリプトを書く

DSairLiteは、PCからシリアル通信を使って制御することができます。仕様は、Serial Communication Specificationに書かれています。

PCから操作するソフトを書くのは、ちょっと手間がかかります。しかし、最近の流行りのAIを使うと、アッサリと作ることできます。

たぶんWindowsユーザーならば、いつのまにか入っている以下のCopilotボタン。これを使って、DSairLiteで動かせるPythonスクリプトを作ってもらいましょう。

なおPythonの導入は、ネットを見て頑張って入れてください。そんなに難しくはないのですが、コマンドを何度か打つので、慣れない人はちょっと大変かも。

Copilot画面を開きます。設定してない場合は、サインイン画面に切り替わるかもですが、サインインすれば無料で使えます。

Copilotへのプロンプト(メッセージ)は、以下のように書いてみました。

https://desktopstation.net/wiki/doku.php/desktop_station_s_serial_communication_specification に書かれている鉄道模型のデジタル制御システムのPythonスクリプトを書いてもらいたいです。そのスクリプトの内容は以下のとおりです。 パワーオンして5秒後にDCCアドレス3の車両のファンクション0とファンクション1をONにし、3秒後に速度を50%で走行させます。2分後に停車させます。走行を2分、停車を30秒として繰り返してください。
DCCアドレス3は、0xC000をオフセットしたものになります。

すると、以下のようなスクリプトを生成してくれます。

import time
import serial

# シリアルポートの設定
ser = serial.Serial('COM3', 115200, timeout=1)  # 適切なポートを指定してください

def send_command(command):
    ser.write((command + '\n').encode())
    time.sleep(0.1)  # コマンド間のウェイト

# パワーオン
send_command('setPower(1)')
time.sleep(5)

# DCCアドレス3のファンクション0と1をON
dcc_address = 0xC000 + 3
send_command(f'setLocoFunction({dcc_address},0,1)')
send_command(f'setLocoFunction({dcc_address},1,1)')
time.sleep(3)

# 速度を50%で走行
speed = 1023 // 2  # 最大速度の50%
send_command(f'setLocoSpeed({dcc_address},{speed},2)')

while True:
    # 2分間走行
    time.sleep(120)
    send_command(f'setLocoSpeed({dcc_address},0,2)')  # 停車

    # 30秒間停車
    time.sleep(30)
    send_command(f'setLocoSpeed({dcc_address},{speed},2)')  # 再び走行

このスクリプトを動かすには、timeとserialというアドオンを導入しておく必要があります。pip install timeとpip install serial、pip install pyserialを使って導入しておいてください。

うちのDSairLiteは、COM84に割りついているので、上記のスクリプトでポートをCOM3からCOM84に変更しました。

そのまま特に考えずに実行してみました。特に問題なくあっさり動作。いやはや、すごい時代です・・・。

なお、OpenCVとかを組み合わせてスクリプトを書かせて、カメラを使った自動認識による自動運転もたぶんできるはず。なにせ、昨今のAI関係は、ほぼPython使って実装されていますので。

タイトルとURLをコピーしました