![]() |
What base class do you use when programming?
What base class do you use when programming and why?
|
Re: What base class do you use when programming?
Simple robot for life
|
Re: What base class do you use when programming?
Iterative Robot based for life. Actually I'm moving to command based this year.
|
Re: What base class do you use when programming?
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. |
Re: What base class do you use when programming?
Quote:
|
Re: What base class do you use when programming?
java.lang.Object
|
Re: What base class do you use when programming?
Simple Robot, considering moving to Iterative Robot.
|
Re: What base class do you use when programming?
Quote:
|
Re: What base class do you use when programming?
We use simple because it's well… simple.
One of our programmers briefly experimented with iterative |
Re: What base class do you use when programming?
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.
|
Re: What base class do you use when programming?
IterativeRobot. What it lacks in simplicity it makes up for in flexibility.
|
Re: What base class do you use when programming?
Quote:
|
Re: What base class do you use when programming?
Quote:
|
Re: What base class do you use when programming?
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 |
Re: What base class do you use when programming?
We implement IgneousApplication. :D
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.) |
Re: What base class do you use when programming?
Quote:
|
Re: What base class do you use when programming?
RobotBase.
|
Re: What base class do you use when programming?
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. https://www.youtube.com/playlist?lis...wtlgnvhGObeKzp |
Re: What base class do you use when programming?
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. |
Re: What base class do you use when programming?
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.
|
Re: What base class do you use when programming?
We have been using SimpleRobot base class since 2009 when C++ and the cRIO became available. Because it gives us full control and flexibility in how we handle the robot operations. We implement an architecture similar to the CommandBase but of our own design.
We have classes representing the main robot systems which define an interface to: [1] support the various tasks that will be requested by the operator and [2] provide any information that will be needed by other classes, as well as [3] a service function which is called each time through the main loop of teleop and autonomous to perform multi-step operations. [Note that none of the interface functions are allowed to perform operations which take significant processing time; they simply set a flag to start an operation or turn on a mode and return.] Our TeleOp and Autonomous functions are basically loops which maintain the loop time (required for PID loops and other control systems) and make use of the interface defined by each class to facilitate the operation required... either based on an operator request (like pushing a button on the joystick) or based on the steps defined for the currently selected autonomous mode. Reusing the same class interface functions to perform operations in both modes allows our autonomous to come together very quickly and reliably after the testing is done for teleop. |
Re: What base class do you use when programming?
Would someone please explain the difference between a CommandBased robot and an IterativeRobot?
We went to java in 2012 and started with the RobotBuilder tool. It generated a code skeleton derived from IterativeRobot. The IterativeRobot class is contained in sunspotfrcsdk\lib\wpilibj.src\edu\wpi\first\wpilib j. I have not been able to find a CommandBased class in the wpilib. The IterativeRobot is "command based" in the sense that on every iteration of the control loop, it executes any active commands. I'm not sure how a CommandBased robot would be any different. As for multi-threading, we can get into a theoretical discussion on the merits of multi-threading on a single CPU platform. In general, I prefer the explicit control of keeping things single threaded and using the setInterruptible or cancel methods if I need to preempt a running command. But this would be a discussion for a separate thread (so to speak). |
Re: What base class do you use when programming?
Quote:
|
Re: What base class do you use when programming?
Thank you!
|
| All times are GMT -5. The time now is 14:13. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi