Developing Robot Train scripts that run under JMRI to operate realistically on my layout. They obey signals, turnouts, and sensors along a route through blocks of track on my layout. They stop at one or more specific points in a block along a specified route. The scripts also support multiple reverse/forward consist direction directives as part of a route.
When electronic/software controls are installed and my database app is installed and populated for all tracks/blocks, sensors, turnouts, signals and runarounds then only the desired stop specs and turnout settings must be specified to create a robot train route script that will operate under a JMRI controlled layout. Scripts can run autonomously or under Dispatcher control. In recent updates, we allow a Robot Train to dynamically choose main or alternate bypass tracks of a run-around to effect meets versus collisions on our single track mainline.
A dispatcher can control all or a portion of the layout. Two or more dispatchers should be able to jointly advance robot trains across multiple dispatcher controlled territories. A set of these scripts could be used as a game by visitors or members. So instead of museum gazing, visitors can safely control train flows by acting as the dispatcher of some or all of the layout. Of course since human operators (should) also obey the signals, turnouts and dispatcher directives, a mix of human controlled and robot controlled trains should be able to operate a layout at the same time.
Positive Train Control (PTC) for Robot Trains is a long range goal!
These are my prototype-like requirements for Robot Trains :
Manifest Scheduled (Timetable) Robot Trains started by JMRI Logix (April 2016)
West to East
East to West
Robot Train with Reverse Beta 2 - Loco and five cars dynamically change speeds based on sensors and script. Stops at four locations for unloading beer to thirsty people! Final move is a reverse run into alternate Ashland track.
Automated Cornfield Collision Avoidance for Robot Trains with no Dispatcher Intervention Required (August 2016)
Robot trains running toward one another on single track mainline blocks escape using run-arounds (October 2016)
Adherence to Consist Direction specification is critical to correct movement of a robot train. What if we use reverse loops? Can the script accommodate the change in Consist Direction that occurs when we exit a reverse loop. See the image below where a reverse loop is highlighted. Reversal is somewhat subtle - goes through mountain to reverse direction! When a Consist moves from East to West , it exits going West to East.
Recall that my Robot Train can move forward or Reverse. This feature required me to separate Consist Direction from Loco Gear as Forward and Reverse behave differently by Consist Direction. Also, reverse loops impact relative stop locations within a block, for instance.
Video of Robot reversing Consist Direction using a loop, could have been just a locomotive, by running through mountain,
Video of Robot reversing Consist Direction using a WYE, could have been just a locomotive.