![]() |
LabView code of other teams ?
Hi,
My main role in the team is programming and I've been learning labview for a few weeks. I have read many pdf s and watched tutorials, but the way how i'm going to program our robot isn't enough clear in my mind yet. I need to control 2 super shifters with 4 CIM in drive train, 2 pneumatics pistols and 2 CIM in other systems. All systems is going to run in Autonomous Mode as well. I think If I had some example robot codes from past years including controls like above, It would be great to understand and make other things clear in my mind. Any help would be ok. Thanks from now. |
Re: LabView code of other teams ?
If you do a quick search on this site, you can find Team Titanium's code from last year. They used a lot more than what you're using, but they did a really good job all around, especially their autonomous mode. :yikes:
|
Re: LabView code of other teams ?
Quote:
In BEGIN you'll see how to start single and double action solenoids as well as how to set-up a 4 motor drive. In FINISH you'll see how to end each of those things. In TELEOP we just read the state of our driver controls and write them to global variables. We used button 3 for shifting and button 2 to control our arm moving up and down. We also read the X and Y joystick axis to pass along to our drive loop. In PERIODIC TASKS/TIMED TASKS you'll find us reading the global variables. The X and Y joystick variables are read in the drive loop. You can ignore the logic involving the "SkySwitch". When reading the button 3 variable you'll notice some logic used to toggle so the driver doesn't have to keep the button pressed to stay shifted. Ignore the "shift overide" logic. After the toggle we set the state of the solenoid. Single action solenoids are set to either off or on. Our appendage on button 2 is set up in a similar fashion with a toggle. Again, you can ignore the intermediate logic. You'll notice that the double action solenoid is set to either forward or reverse instead of off or on. During AUTONOMOUS we write to the same global variables that the driver's controls write to during teleop. If we wanted to lower the appendage we would write button 2 to true which simulates a driver button press. To raise the appendage we have to write it false (simulating the driver releasing the button) than write it true again (switching the output state of the toggle). |
Re: LabView code of other teams ?
Quote:
I read something regarding using global variables and it was saying that using a lot global variables may cause lags on your cRIO. We have FRC cRIO with 8 slots and as far as i know its ram is half of the cRIO with 4 slots. Should we avoid using them or it's not a big problem? Did you use a custom dashboard to view the speed using encoders? We have encoders on shifters and we don't need them specifically, but we want to use them to view our speed on dashboard. btw, what is the purpose of using "WPIEnhanced IOSet Ehanced digital config vi", i didn't understand those part in the begin.vi exactly. Thanks again. |
Re: LabView code of other teams ?
Globals have a bad reputation. If used properly, they are fine, and often the best and most efficient method of sharing data. If used improperly, they will cause race conditions. Because they also represent a data copy operation, they can cause lag, but so will most other sharing mechanisms.
Simply opening the encoder and configuring it will make it available on the LV dashboard in test mode. That may be good enough for diagnostics, but not for driving feedback. Sharing data to the dashboard is accomplished by reading the encoder and writing it to a SmartDashboard variable. On the dashboard the encoder will be in the Variables tab automatically. If you want it in your own display element, drop one in either Operation or Auto tabs and give it the name of the SD variable. Those tabs default to binding to SD variables using the control name. If you want other tabs to bind to SD, add them to the array on the block diagram. For more sophisticated displays, you may instead choose to do an explicit read on the dashboard, do the calculation or combination of data, and update the display elements yourself. A good example of this would be graphing left versus right or doing other calculations and displays of encoder data. The top loop is a pretty good place for code like this. You could also make your own loop. WPIEnhanced... is telling the driver station how the Cypress I/O board pins are to be configured. This can be done interactively on the I/O tab of the DS. It can also be done at runtime from the robot as they demonstrate. Greg McKaskle |
Re: LabView code of other teams ?
|
Re: LabView code of other teams ?
I tried to understand them, but some seems hard to edit to me, especially when you add some additional vi s beside the default code. Now we can control our drive train and run arm motors, but can't control the pistons as we wanted. I added the default compressor code and by the help of pressure switch the pressure always sets himself to correct range. However the extend and retract functions only work when the pressure is above 100 psi. We use super shifters in our drive system and wired 2 shifting pistons to one solenoid to shift at the same time. So, 100 psi isn't needed to shift. How can we control pistons whenever we want to and no matter the pressure is?
|
Re: LabView code of other teams ?
Quote:
|
Re: LabView code of other teams ?
Quote:
|
Re: LabView code of other teams ?
Quote:
http://imgur.com/yWLShcp http://imgur.com/JcrDTcO&yWLShcp&NfAFJ3K&O8KQNNz#0 (green wires come from two different buttons) These are the codes releated to our solenoids in our begin and teleop vi. To try in a different way, we first ran the compressor and filled the air tanks and then wired a solenoid and run the program. It still does the same thing. Although the pressure switch or compressor aren't wired, we can't extend the pistons below nearly 100 psi. Is it normal? |
Re: LabView code of other teams ?
Quote:
Quote:
Or maybe whatever you have the cylinder connected to just requires that much force in order to move. What is the mechanism you're trying to activate with the cylinder? |
Re: LabView code of other teams ?
Quote:
We solved our problems with solenoids. Thanks for your help. I guess I was lack of some essential information about solenoid. First we changed the code and then checked our wiring. We found out that our solenoid breakout is not fed by 24v on pdb and fixed it by wiring it to C and NC outs. All of our solenoids are 24v, we missed that detail. We can finally drive our robot, shift and control other pneumatic systems properly. Now, the only thing that was left is vision processing in autonomous. We looked over the example code and tried to understand it. We could customize our dashboard by the example code. However, we still don't have any idea how to link the example code to our robot actions in autonomous mode. I know this thread is going far from its title and hope that it's not a problem. Do you have any simple and clear resources about using vision processing code in auto mode? |
| All times are GMT -5. The time now is 09:48. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi