What base class do you use when programming and why?
Simple robot for life
Iterative Robot based for life. Actually I’m moving to command based this year.
Last year we used iterative robot, because finite state machines are very easy to write and we didn’t want to deal with concurrency.
We may look at multithreading this year.
We might try multithreading as well. But we want to shy away from CommandBased and try to write our own.
java.lang.Object
Simple Robot, considering moving to Iterative Robot.
I second this
We use simple because it’s well… simple.
One of our programmers briefly experimented with iterative
I’m not going to say that they’re wrong, but anyone not using command based should seriously consider it. It does make some simple things more complicated, but greatly helps readability and maintainability, and it makes chaining actions together and responding to inputs very easy.
IterativeRobot. What it lacks in simplicity it makes up for in flexibility.
Having spent serious time and energy trying to make complex actions work safely with SimpleRobot, switching to CommandBased was probably the best programming decision 11 ever made. Not having logic sprinkled through all levels of your code is the best thing ever.
We switched to Java 2 seasons ago and went straight for the Command Based structure, and we have been all aboard ever since. As a professional Java developer and ex-CS teacher I feel it teaches excellent practices and is pretty simple to pick up as a beginner.
In 2013 and 2014, we used Brad Miller’s Robot Builder to create a Command based structure in C++. I agree with the comments of Bryce Paputa, wmarshall11, and notmattlythgoe on the Command based approach.
Plus, I like Brad’s “pictures-to-code”. It introduces the students to the practice used extensively in my field of aero gas turbine controls - and elsewhere.
We’ll use it, again, in 2015.
Prior to that we used the Iterative Robot framework, for the same reasons nathanwalters posted.
Eric
We implement IgneousApplication.
More specifically, we use our team’s event-based robot framework (the CCRE), which we think is nicer than the command-based framework because it gives us lots of useful tools without forcing a specific structure in the way that command-based does.
Also, event-based control seems to be a better option to program robots than cycle-based control or thread-based control, as far as I can tell. (Though we occasionally still use those in the places where they are helpful.)
Just looked at it. It looks pretty awesome, I might give it a try.
RobotBase.
To start this year, we used Simple Template, but in the off season, and during the WVROX event, we used Command Based. Having a very small programming background, I thought the transition would be difficult, but it was a lot easier than I though. Moreover, there is a tool called RobotBuilder which makes programming in command based a lot easier, and very quick. It works really well, and it is easy to work with, and teach to others.
This playlist of videos really helped me get started.
Personally my background is in game development and thusly I am familiar… Very familiar with the game loop. So for me I find comfort in using IterativeBot. It is flexible in my opinion and I find it easy to implement event-based code and concurrency in some ways. Done right it is not spaghetti code at all.
IterativeBot is my choice.
Up until 2013 we used Iterative Robot. In 2013 we switched to Command Based. I don’t envision us ever going back. It has encouraged OOP and it has been easy for the newer students to grasp. We are considering using RobotBuilder for 2015 because most of our students have very little OOP and we don’t want them to be bogged down in writing classes and creating umpteen million files.