![]() |
Re: 2015 Control System Alpha Testing
Quote:
|
Re: 2015 Control System Alpha Testing
I'm curious how the rRio deals with a second high bandwidth USB device being used at the same time as the usb radio. Are both ports connected to the same root hub so that they share the bandwidth? Having written a USB driver for work, I have learned enough to be skeptical of USB.
I'm also curious what the bandwidth is to the various digital inputs and outputs. How fast can you actually read them by polling? I have seen other controllers (Chumby Botball Controller, I'm looking at you) get this very wrong. Hook up an encoder, and count the edges in polling code. See how fast you can spin it before loosing counts. What rate can the controller actually read encoders? Edges/second. How many encoders can it support? We used (before it lost us a regional) a feature in WPILib which let us read an encoder immediately after a hall effect had a positive edge by firing an interrupt. This was awesome since we could use it to figure out when a joint passed the homing position without having a polling delay. Does this work in the new version? How is the timing jitter? +- ?% Am I going to have to work really hard to get my timing accurate to avoid control loop problems like on the cRIO? I can't count how many control loop problems ended up being timing jitter problems... |
Re: 2015 Control System Alpha Testing
Tom, the shipping company has graciously volunteered to do that testing.
Austin, I was going to send you a URL to the specs, but what I could find was pretty light. I'll try to answer them here. USB bus can be overloaded, but so can ethernet. The effects when you do so are different, and you are correct in being skeptical. It will be tested in this situation. As for other I/O rates -- the roboRIO is a similar architecture to the cRIO and all other NI RIO devices. RIO stands for Reconfigurable I/O, and that means an FPGA is user-programmable to handle the hard-real-time duties like building a decoder from some digital inputs. The I/O speeds of cRIO are determined by the modules, so the roboRIO digital speeds are actually far higher. I don't have the details on count and speed, but it I believe it is the same number of encoders at about 10x the speed. As for jitter of the RT code reading the encoder, that is something you control. VxWorks is a realtime OS and you should be able to measure and control jitter, but the base templates and frameworks in FRC avoid many of those features in order to keep the code clean. The RT-linux OS will offer many of the same features, but if you don't use them, you are trading simpler code for jitter. How much jitter are we talking about, and do you know what was causing it? Greg McKaskle |
Re: 2015 Control System Alpha Testing
The symptoms generated by the new system under low voltage conditions (momentary dips as well as a dead battery) would be of interest. The effect of low voltage brownout on a maxed out USB power output, various communications types, PWM/Relay/Digital outputs, voltage regulators, peripherals like the pneumatics breakouts, in addition to how the system handles staged shutdown. The shutdown response to a short on the different types of power pins (what doesn't get cut), overloading the power draw of the USB ports, that type of thing.
Ability of software to detect and report or act on these power outages. How the system responds to the overload of time unconstrained loops and other common rookie programming mistakes - grind to a halt or critical operations take priority. Easy to write a test program that exercises every I/O at once. Identify limits, e.g. max number of encoders supported, and what happens when you try to go past those limits. Test and verify the limits they've told you the new system has. |
Re: 2015 Control System Alpha Testing
Quote:
|
Re: 2015 Control System Alpha Testing
Quote:
I dare anyone to try that with the roboRio ... any Alpha Tester volunteers? |
Re: 2015 Control System Alpha Testing
Quote:
|
Re: 2015 Control System Alpha Testing
Quote:
|
Re: 2015 Control System Alpha Testing
Quote:
The only reason they knew something was wrong was they were missing two sprockets when they unloaded the truck and that the crate seemed to be a LOT heavier than when they put it on the truck! |
Re: 2015 Control System Alpha Testing
I would be curious to see how well it handles intensive vision processing.
|
Re: 2015 Control System Alpha Testing
Quote:
I'd guess you're talking about high-speed velocity control, but give me specifics on what caused you trouble in the past. |
Re: 2015 Control System Alpha Testing
Quote:
Write a loop which sleeps for X msec, or runs code in a notifier at a specified frequency, and then reads the system clock and looks for how long it actually slept. Do this a large number of times and plot it. I would expect to see Gaussian noise of small magnitude if things are working right. Yes, we had a problem with a high accuracy velocity loop. On the cRIO, I was seeing a 100 hz loop returning anywhere from 5 to 15 ms (I think it was worse, but I'll guess low). You could hear it in the loop. The state space observer made the assumption that the timestep was constant at 10 ms to simplify the math. The loop would throw the motor into full reverse occasionally on our flywheel to deal with the large apparent change in velocity. Our programmer dealt with this by registering a timer interrupt on vxworks so our code would get run every 10 system ticks, but that was a lot more work than it should have been. You would expect that "sleep" on a realtime system would sleep for the correct amount of time if the priority is right. 254 never got it working correctly with Java, and I had to detune the observer to deal with it. Austin |
Re: 2015 Control System Alpha Testing
The link below digs into this a bit and shows the jitter of various timing mechanisms in LV. It is not safe to assume that all programming resources on a realtime OS are realtime.
http://team358.org/files/programming...Everything.PDF Greg McKaskle |
Re: 2015 Control System Alpha Testing
I guess one really good way to test the hardware for potential issues is to beta test the hardware and software during the 2014 season. This is not directly related to the thread, sorry, but it would seem this would be the next logical step.
It would also seem if there are few perceived advantages given to a beta hardware/software test team over the existing cRIO2 system that this should be seriously considered. It also provides an excellent way for other teams to get a chance to see the system while at district and regional events. |
Re: 2015 Control System Alpha Testing
Quote:
That would certainly be a good test for the new control system, but there are a few problems with doing so: - The new control system provides some significant enhancements, like increased processing power and USB host/device ports - To the best of my knowledge the new control system has not been tested with the old FMS - there may be compatibility issues running it at an event - The new control system could introduce bugs/issues that other teams wouldn't encounter, leaving those teams running it at a disadvantage in competition That said, FIRST is doing a lot to test it. We've been asked to implement the new control system on our 2013 robot, and all the Alpha Test teams will be getting together in NH this fall for a weekend "event-like" testing. I imagine this testing would be similar to what they did for the communications issues last year, except obviously with a different focus. Regardless, we'll be running the control system on the FMS it's meant to be run on in a competition scenario to try and find issues. We're also expected to bring the new control system with us to events January-April to help expose other teams to it. Since it won't be on our 2014 robot, it will be available for other teams to look at and ask questions about the entire competition, instead of being unavailable when the robot is on the field. |
| All times are GMT -5. The time now is 03:28. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi