Hello fellow FRC teams. We all know that sometimes reloading code onto the robot can be a pain. One has to deploy, restart, and wait for the robot and router to boot back up. This can take around 2 minutes and unforseen runtime errors can occur after one deploys, which forces one to deploy and reboot again. This can be a hassle if one needs to change something quickly or load a different set of instructions for the autonomous period. Reloading code like this on the practice field may consume all of the time one has to practice.
Many people have looked for and found an answer in many different places, mostly in the form of interpreted languages. People have created bindings for WPILib to languages like Lua, Python and Gordian. But we've found AngelScript to be the best solution for us.
What is AngelScript?
AngelScript is powerful scripting language created by Andreas Jönsson. It's main features include familiar C/C++ syntax with few deviations, the ability to create C++ classes and structs in scripts, and runtime compilation of scripts into byte code. The library is very easy to use as an application writer as well. You simply bind functions as they are with no need for proxy functions. This means scripts only have access to what the application writer allows. All these features make for a very powerful scripting language with execution speed comparable to Java.
AngelScript is hosted at www.angelcode.com/angelscript.
Benefits in FRC
Instead of programming in a weaker typed language for the benefit of scripting, one can write in AngelScript, which uses the C++ syntax that many programmers are used to with Wind River development while also allowing for reloading during runtime. You can make powerful classes and structs in the script, and if one needs more functionality that isn't available in the basic framework, it can easily be implemented without the need for proxy functions.
AngelScript is much faster than any other scripting language. Every script is compiled to bytecode which instructs the runtime to execute the appropriate PowerPC assembly instructions, so its speed is comparable to that of Java on the cRIO.
We are providing a simple, easily usable framework that includes a packaging/building class, a script robot class that runs on the robot using the contents of a package, and a deployment tool.
The ScriptRobot project by FRC team 3512's Harrison Miller is released under the GPLv3 license.