|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools |
Rating:
|
Display Modes |
|
|
|
#1
|
|||
|
|||
|
Re: Really underhanded
Hello-- I'm the programming mentor for 3018 Nordic Storm, and our programming team this year is new to java. But here is how we approached it.
What you are asking should be doable in 7 lines of Java written and about 10 labels provided to Robot builder and about 7 items added to robot builder, 2 chekbuttons pressed and 6 dropdown selections made in Robot builder. *Very Briefly* In Robot builder:
In Eclipse:
Above is essentially how I led our programmers through the task of programming our mecanum chassis. There may be some typos, but it is relatively complete Here is the above sequence with a lot more details
Hopefully this will prove helpful. There are also some great YouTube videos about RobotBuilder published 2 years ago here: https://www.youtube.com/watch?v=k7Pa...lgn vhGObeKzp that I recommend to understand the wonderful CommandBase architecture provided by WPILib. It takes a bit of skill to properly use CommandBase-- choosing your subsystem functionally that you expose is key. Only using commands to access that functionality of your subsystems is key. For example, say you have a switch in a toteCollector subsystem that lets you know when one tote is loaded. You *could* write a method called bool getToteCollectorSwitchState(), or worse DigitalInput getToteCollectorSwitch() but you will find it it quickly tedious to use. The whole point of a subsystem is to *hide* details and expose only those things that you deem commandable or askable. Instead consider the approach bool isTote1Loaded() { } Now the switch is hidden from the subsystem's external callers-- they don't need to know how the switch works in the subsystem, nor should they care. What they need to know is if the tote is loaded. This gives your subsystem flexibility to change to a light sensor or a pressure sensor instead of a digital switch, but any commands that need to know when tote #1 is loaded won't need to be changed. |
|
#2
|
||||
|
||||
|
Re: Really underhanded
I will look into this though out the day, we havent dabbled much with Robot builder, as we have been waiting for our programming mentor (who we only see on saturdays) to assist us with this matter. With these instructions and what i have found elsewhere its worth the shot.
Please ignore my ignorence, on our team we really stress the "The Kids Run The Team" Motto, so I have had a lot on my plate and offered not to be the head programmer for this exact reason. |
|
#3
|
||||
|
||||
|
Re: Really underhanded
Quote:
The major issue at hand is that the wheels are all spinning at different paces although they are all the same ( and by that I mean is that they are all controlled by talons |
|
#4
|
|||||
|
|||||
|
Re: Really underhanded
Quote:
|
|
#5
|
||||
|
||||
|
Re: Really underhanded
Quote:
|
|
#6
|
|||||
|
|||||
|
Re: Really underhanded
Correct, there could be other issues causing them to be off in speed, but this should get them close enough to be decently driveable.
|
|
#7
|
||||
|
||||
|
Re: Really underhanded
Quote:
|
|
#8
|
|||||
|
|||||
|
Re: Really underhanded
Oops, missed that step. Correct.
|
|
#9
|
||||
|
||||
|
Re: Really underhanded
I have the wheels on center now and with a robot builder built code have the drive train working. Although that is wonderful, I am interested in using the generators within eclipse itself.
Would that change the robot's form? And by that I mean from command to simple or ect? |
|
#10
|
|||||
|
|||||
|
Re: Really underhanded
Quote:
|
|
#11
|
||||
|
||||
|
Re: Really underhanded
No, I am just curious on which is better to use for the team in the long run. As programming lead it is my best interest to teach the underclassmen for the future. I will take the time during the season and in the off season to teach and share my learning with the other programmers. Fortunately I am a junior so I will be here for at least another year.
|
|
#12
|
|||||
|
|||||
|
Re: Really underhanded
Quote:
|
|
#13
|
||||
|
||||
|
Re: Really underhanded
I may need help with getting started, or explaining for that matter. Do you usually use robot builder?
|
|
#14
|
|||||
|
|||||
|
Re: Really underhanded
Quote:
|
|
#15
|
|||
|
|||
|
Re: Really underhanded
Quote:
Disadvantages
Advantages:
Truth in advertising disclosure: The electrical team delivered our practice chassis with the shiny new roboRIO to the programmers at 6pm a couple weeks ago. The previous session we had done the first RobotBuilder portion of the sequence but hit a wall because wpilib was not being introduced into the project and none of the functions from wpilib were resolving. We spent 1hr realizing that we had installed Eclipse/Java instead of Eclipse/C++ (didn't read the install directions carefully enough). It took us a full hour to write the 7 lines of code noted above and we kept having to revisit RobotBuilder because my style of teaching is 'OK-- what do we do next? What do we need now that we have this DriveTrain???' What can we currently do with it?? What methods are avaliable to us? They look and realize the class as written from RobotBuilder does nothing but set the default command and that is nothing but comments. So I taught them the concept of adding functionality to a class by providing useful methods and we wrote mecanumDrive and taught them the whole 'just type robotDrive41 and press period' to see what functionality exists on a RobotDrive object, etc. etc. Finally after 30-40 minutes and teaching what a double is and what parameters are, etc... we wound up with the mecanumDrive() function. Then I ask 'OK-- so now we have a subsystem called DriveTrain that has the functionality of something called mecanumDrive on it. How can we make use of this? How can we command it to do something?? Eventually we arrive at the discussion that we need commands to control subsystems, go back to robot builder and add in DriveWithJoystick, we talk about Scheduler and the role it plays and why we need requires'. Then we get to the question 'OK-- so what else do we need now that we have a command that can control our DriveTrain???' Eventually after much prodding I get them to realize that we need Joystick input and we add the Joytick. By the time we review how a command works and fill out the execute() function there is only one hour left and we spent that flashing the roboRio, etc. We spent the first hour of the next session setting up routers figuring out how to deploy the code. It took us a full 4 hours of FRC practice following the general cookbook I outlined in my previous post until we even downloaded our first set of code. Thankfully things were working pretty good out of the gate-- one wheel was not spinning at all-- we replaced PWM and it started working. We realized that when we tried to drive forward the right wheels went backwards and I had them invert the right side. So even though you *can* get up and running in 10-15 minutes with the above cookbook-- to properly learn what is going on along the way and be successful when you don't know all the answers going in, you may find yourself needing 3-4 hours. |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|