Quote:
Originally Posted by nyaculak
I don't think I can stress this enough, but I REALLY discourage the use of the CommandBase template. I've tried coding with it, but this system only seems to complicate the robot code.
Each part of the robot needs to be broken down into subsystems and then the commands for that subsystem are contained within a separate class. I find that our code flows much more intuitively if we combine data and behavior into one class for each subsystem program the usage of it in a procedural manner.
The CommandBase seems to strip a lot of the control from the user. You're pretty much stuck with the system that the CommandBase provides. You can accomplish exactly the same thing in both CommandBase and Simple/Iterative Robot templates, but if the CommandBase system does not fit what you want to achieve, you are going to have a bad time. With the Simple and Iterative Robot templates, you can decide the precise execution of the actuators on the robot and easily set up your own system for how to do so.
Also, for a team with less experienced programmers, the CommandBase system seems much more complex. I can't say I speak from experience, but if you encounter a problem when writing your code, it will be harder to diagnose where the problem is located. Even if you use RobotBuilder, you'll likely encounter logical errors that will be difficult to debug for novice programmers.
The CommandBase template did come with one thing that I really liked and that was the inclusion of the RobotMap class. It's used to contain a listing of static fields of all the digital and analog input/output channels from the cRIO modules and the sidecar. This was a great idea! Every team should do that.
|
Not to sound rude but, I actually disagree with everything you've stated and actually believe the opposite of it all. As an ex-teacher and a java developer I've found the command based system to be much easier to teach and debug than the iterative platform. The students are also able to pick it up extremely easy are able to easily debug what is going on.