Closes #9, #10, and #30. In doing so, also closes meta-issue #7.
Adds scripts to upload the ROS environment to the roboRIO, as well as to deploy user code to the roboRIO. When deploying user code, a launch file is specified. The system is set up such that the normal robot code command is replaced with the roslaunch command. This allows code to be started, stopped, and restarted using the normal FRC mechanisms. That means code will start automatically at boot, will restart whenever it crashes, can be restarted using the Restart Robot Code button on the driver station, etc.
In getting this upload process ironed out, I also tweaked the way the cross-compilation works. All linked libraries are linked dynamically except for vendor libraries, which are linked statically. This aligns with how the gradleRIO tools compile the code. Additionally, libraries are uploaded to the same directories as a standard gradleRIO code deploy. Overall, I moved to mimic the key behaviours of the standard FRC programming procedure as much as possible in order to minimize complexity.
There are still improvements which can/should be made to this uploading process. However, the current iteration works and seems reliable from my testing, so I'd like to get it landed and I will open up follow-up issues to address further improvements such as centralizing parameters like team number, launch file, etc to a config file rather than specifying everything on the command line every time.
Pull Request
Closes #9, #10, and #30. In doing so, also closes meta-issue #7.
Adds scripts to upload the ROS environment to the roboRIO, as well as to deploy user code to the roboRIO. When deploying user code, a launch file is specified. The system is set up such that the normal robot code command is replaced with the
roslaunch
command. This allows code to be started, stopped, and restarted using the normal FRC mechanisms. That means code will start automatically at boot, will restart whenever it crashes, can be restarted using theRestart Robot Code
button on the driver station, etc.In getting this upload process ironed out, I also tweaked the way the cross-compilation works. All linked libraries are linked dynamically except for vendor libraries, which are linked statically. This aligns with how the gradleRIO tools compile the code. Additionally, libraries are uploaded to the same directories as a standard gradleRIO code deploy. Overall, I moved to mimic the key behaviours of the standard FRC programming procedure as much as possible in order to minimize complexity.
There are still improvements which can/should be made to this uploading process. However, the current iteration works and seems reliable from my testing, so I'd like to get it landed and I will open up follow-up issues to address further improvements such as centralizing parameters like team number, launch file, etc to a config file rather than specifying everything on the command line every time.
Contribution Checklist
Change Checklist