LabView State Machine Toolkit

Here is a link to a free LabView toolkit that teams might find helpful for autonomous code (we are using it in ours). One of our software mentors has been working with his employer to make this available online (it had already been something that they give away free), and they finally put it online today.

http://www.jetinc.net/tools
It is free, but it does ask for your email so they can track who is using the toolkit.

Our LabView mentor explains what the toolkit does:

“The toolkit is a custom queued state machine toolkit. a QSM allows the users to very quickly and compactly put together very complex code with small physical footprint by breaking it into multiple cases in a state machine, rather than long chunks of sequential code. The big advantage to an FRC team is that flexibility it allows in the creation of cases that be used in different orders. The order of execution is defined by how you enqueue items into the controlling queue, not the order in which they occurs in the vi themselves.”

Hopefully some other teams will find this useful.

Looks interesting. I can see a couple of ways it may be useful but couldn’t find any documentation.

Where do I find the documentation?

Thanks

Readme.txt (2.86 KB)

Greg,
Attached is the read me text file that is supposed to ship with the installer and apparently doesn’t. Sorry.

Basically, what’s REALLY important is that you can open up your Autonomous vi, scroll to the middle of nowhere, and if you go to your functions palette/JET/QSM Template.vi, it will drop the template for you … while loop … major functions, case structure already populated.

If you haven’t used a QSM before, you’re in for a ride, but its a ride you’ll never regret going on. We use this toolkit in everything we do at JET. Its the most useful piece of reuse code I’ve ever had the pleasure of working with.

Basically, a QSM is a state machine, but it uses a queue to process states. In any state, which is an individual case in the case structure, you can add additional states to the queue. You can add them to the end of the queue, and they will run in the order added, AFTER any states already in the queue, or you can “add to front” and they will run immediately.

I’ll try to put together some sample code.

One other important thing … they is a cluster running along the top of the vi … this is the status cluster or, if you prefer, the GAC for “giant a** cluster.” basically, what you do is all of your data that you might use from state to state goes into the status cluster. MAKE SURE YOU TYPE DEFINE IT. For example, we are opening ANY references we might need our code for IO in a state called “References: Get”, which is initially called in the “VI Initialize” case, which is ALWAYS the first case that runs. In “References: Get” we open any refs we might need, and then stick them into the status cluster. Then anywhere we need them, we use an Unbundle by Name to use them.

Hope this gets you started. I’ll monitor this thread and provide any support I can.

Kent

Readme.txt (2.86 KB)


Readme.txt (2.86 KB)