Go to Post When we find bugs at work, we don't ask "who wrote that section of code?" We ask "Who is the best, most knowledgeable person to work on fixing this bug?" - Jon Stratis [more]
Home
Go Back   Chief Delphi > Technical > Programming
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
Closed Thread
 
Thread Tools Rate Thread Display Modes
  #1   Spotlight this post!  
Unread 08-13-2014, 07:52 AM
wmarshall11 wmarshall11 is offline
Registered User
FRC #2399
Team Role: Mentor
 
Join Date: May 2013
Rookie Year: 2011
Location: Cleveland, OH
Posts: 34
wmarshall11 is a splendid one to beholdwmarshall11 is a splendid one to beholdwmarshall11 is a splendid one to beholdwmarshall11 is a splendid one to beholdwmarshall11 is a splendid one to beholdwmarshall11 is a splendid one to beholdwmarshall11 is a splendid one to beholdwmarshall11 is a splendid one to behold
Re: What base class do you use when programming?

Quote:
Originally Posted by Bryce Paputa View Post
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.
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.
  #2   Spotlight this post!  
Unread 08-13-2014, 08:15 AM
notmattlythgoe's Avatar
notmattlythgoe notmattlythgoe is offline
Flywheel Police
AKA: Matthew Lythgoe
FRC #2363 (Triple Helix)
Team Role: Mentor
 
Join Date: Feb 2010
Rookie Year: 2009
Location: Newport News, VA
Posts: 1,712
notmattlythgoe has a reputation beyond reputenotmattlythgoe has a reputation beyond reputenotmattlythgoe has a reputation beyond reputenotmattlythgoe has a reputation beyond reputenotmattlythgoe has a reputation beyond reputenotmattlythgoe has a reputation beyond reputenotmattlythgoe has a reputation beyond reputenotmattlythgoe has a reputation beyond reputenotmattlythgoe has a reputation beyond reputenotmattlythgoe has a reputation beyond reputenotmattlythgoe has a reputation beyond repute
Re: What base class do you use when programming?

Quote:
Originally Posted by wmarshall11 View Post
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.
  #3   Spotlight this post!  
Unread 08-13-2014, 10:52 AM
EricS-Team180's Avatar
EricS-Team180 EricS-Team180 is offline
SPAM, the lunchmeat of superheroes!
AKA: Eric Schreffler
FRC #0180 (SPAM)
Team Role: Engineer
 
Join Date: Apr 2002
Rookie Year: 2001
Location: Stuart, Florida
Posts: 561
EricS-Team180 has a reputation beyond reputeEricS-Team180 has a reputation beyond reputeEricS-Team180 has a reputation beyond reputeEricS-Team180 has a reputation beyond reputeEricS-Team180 has a reputation beyond reputeEricS-Team180 has a reputation beyond reputeEricS-Team180 has a reputation beyond reputeEricS-Team180 has a reputation beyond reputeEricS-Team180 has a reputation beyond reputeEricS-Team180 has a reputation beyond reputeEricS-Team180 has a reputation beyond repute
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
__________________

Don't PANIC!
S. P. A. M.

Last edited by EricS-Team180 : 08-13-2014 at 10:55 AM.
  #4   Spotlight this post!  
Unread 08-14-2014, 02:30 PM
Cel Skeggs Cel Skeggs is offline
Robot Software Manager Alumnus
AKA: Previously known as Colby
FRC #1540 (The Flaming Chickens)
Team Role: Alumni
 
Join Date: Feb 2013
Rookie Year: 2009
Location: Portland, Oregon, USA
Posts: 107
Cel Skeggs is a glorious beacon of lightCel Skeggs is a glorious beacon of lightCel Skeggs is a glorious beacon of lightCel Skeggs is a glorious beacon of lightCel Skeggs is a glorious beacon of lightCel Skeggs is a glorious beacon of light
Re: What base class do you use when programming?

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.)
__________________
Software manager alumnus. Developer of the CCRE, a powerful robot code framework based on dataflow and composibility.
Refer to as she/her/hers. Years of FRC: 2012, 2013, 2014, 2015, 2016. FLL for a few years beforehand.
Team 1540: The Flaming Chickens | Portland, Oregon | Twitter | Facebook
  #5   Spotlight this post!  
Unread 08-15-2014, 01:19 AM
madhav's Avatar
madhav madhav is offline
Registered User
AKA: Madhav Gharmalkar
FRC #4276 (Viking Robotics)
Team Role: Communications
 
Join Date: Apr 2014
Rookie Year: 2012
Location: Huntington Beach, CA
Posts: 37
madhav will become famous soon enough
Re: What base class do you use when programming?

Quote:
Originally Posted by Colby Skeggs View Post
We implement IgneousApplication.
Just looked at it. It looks pretty awesome, I might give it a try.
  #6   Spotlight this post!  
Unread 08-15-2014, 01:31 AM
AustinSchuh AustinSchuh is offline
Registered User
FRC #0971 (Spartan Robotics) #254 (The Cheesy Poofs)
Team Role: Engineer
 
Join Date: Feb 2005
Rookie Year: 1999
Location: Los Altos, CA
Posts: 800
AustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond repute
Re: What base class do you use when programming?

RobotBase.
  #7   Spotlight this post!  
Unread 08-16-2014, 10:30 PM
ArzaanK ArzaanK is offline
Registered User
FRC #1325 (Inverse Paradox)
Team Role: Programmer
 
Join Date: Jan 2013
Rookie Year: 2012
Location: Mississauga, Ontario, Canada
Posts: 40
ArzaanK is an unknown quantity at this point
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
__________________
Arzaan Khairulla
Programmer/Driver
2013 Greater Toronto Regional East Winners with 1114 and 2056
2013 Galileo Division
  #8   Spotlight this post!  
Unread 08-19-2014, 05:39 AM
MatthewC529 MatthewC529 is offline
Lcom/mattc/halp;
AKA: Matthew
FRC #1554 (Oceanside Sailors)
Team Role: Mentor
 
Join Date: Feb 2014
Rookie Year: 2013
Location: New York
Posts: 39
MatthewC529 is on a distinguished road
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.
__________________
Team 1554 -- Oceanside Sailors
  • 2013-2014 - Lead/Sole Programmer
  • 2014-2015 - Lead Programmer, President
  • 2015-? - Team 1554 Mentor
Independent Public Projects

Developer at Legend Zero LLC.
Java/C++ Programmer

Last edited by MatthewC529 : 08-19-2014 at 05:40 AM. Reason: horrific spelling mistakes... phone keyboard
  #9   Spotlight this post!  
Unread 08-20-2014, 10:53 PM
kylelanman's Avatar
kylelanman kylelanman is online now
Programming Mentor
AKA: Kyle
FRC #2481 (Roboteers)
Team Role: Mentor
 
Join Date: Feb 2008
Rookie Year: 2007
Location: Tremont Il
Posts: 185
kylelanman is a name known to allkylelanman is a name known to allkylelanman is a name known to allkylelanman is a name known to allkylelanman is a name known to allkylelanman is a name known to all
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.
__________________
"May the coms be with you"

Is this a "programming error" or a "programmer error"?

  #10   Spotlight this post!  
Unread 08-22-2014, 01:40 PM
MamaSpoldi's Avatar
MamaSpoldi MamaSpoldi is offline
Programming Mentor
AKA: Laura Spoldi
FRC #0230 (Gaelhawks)
Team Role: Engineer
 
Join Date: Jan 2009
Rookie Year: 2007
Location: Shelton, CT
Posts: 305
MamaSpoldi has a brilliant futureMamaSpoldi has a brilliant futureMamaSpoldi has a brilliant futureMamaSpoldi has a brilliant futureMamaSpoldi has a brilliant futureMamaSpoldi has a brilliant futureMamaSpoldi has a brilliant futureMamaSpoldi has a brilliant futureMamaSpoldi has a brilliant futureMamaSpoldi has a brilliant futureMamaSpoldi has a brilliant future
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.
__________________
  #11   Spotlight this post!  
Unread 08-27-2014, 01:21 PM
jfitz0807 jfitz0807 is offline
Registered User
FRC #2877 (Ligerbots)
Team Role: Parent
 
Join Date: Jan 2009
Rookie Year: 2009
Location: Newton, MA
Posts: 65
jfitz0807 is an unknown quantity at this point
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).
  #12   Spotlight this post!  
Unread 08-27-2014, 01:22 PM
notmattlythgoe's Avatar
notmattlythgoe notmattlythgoe is offline
Flywheel Police
AKA: Matthew Lythgoe
FRC #2363 (Triple Helix)
Team Role: Mentor
 
Join Date: Feb 2010
Rookie Year: 2009
Location: Newport News, VA
Posts: 1,712
notmattlythgoe has a reputation beyond reputenotmattlythgoe has a reputation beyond reputenotmattlythgoe has a reputation beyond reputenotmattlythgoe has a reputation beyond reputenotmattlythgoe has a reputation beyond reputenotmattlythgoe has a reputation beyond reputenotmattlythgoe has a reputation beyond reputenotmattlythgoe has a reputation beyond reputenotmattlythgoe has a reputation beyond reputenotmattlythgoe has a reputation beyond reputenotmattlythgoe has a reputation beyond repute
Re: What base class do you use when programming?

Quote:
Originally Posted by jfitz0807 View Post
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).
The Command Based structure uses the IterativeRobot base class with extra functionality built around it. It sounds like you have been using the Command Based structure.
  #13   Spotlight this post!  
Unread 08-27-2014, 01:32 PM
jfitz0807 jfitz0807 is offline
Registered User
FRC #2877 (Ligerbots)
Team Role: Parent
 
Join Date: Jan 2009
Rookie Year: 2009
Location: Newton, MA
Posts: 65
jfitz0807 is an unknown quantity at this point
Re: What base class do you use when programming?

Thank you!
Closed Thread


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT -5. The time now is 12:46 PM.

The Chief Delphi Forums are sponsored by Innovation First International, Inc.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi