|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools | Rate Thread | Display Modes |
|
|
|
#1
|
|||
|
|||
|
Re: FMS enabling sequence?
There is one Ethernet connection between the FMIS Server and the rest of the world. The commands have to go out serially.
I'm guessing the Cisco Wifi router has 3 channels, and 2 robots are assigned to each channel. Wifi Contention could delay the receipt of commands by a robot. If the command is routed through the Driver Station, then there is minimal delay between when FMIS sends the Auto Start, and when your DS is first able to react. How fast your robot can react to the DS commands depends upon how much wifi traffic there is on your signal. Also, the Cisco Router has one ethernet connection, so how fast your DS responds will determine where in the que is your command. Last edited by rich2202 : 23-03-2015 at 15:40. |
|
#2
|
||||
|
||||
|
Re: FMS enabling sequence?
Quote:
|
|
#3
|
||||
|
||||
|
Re: FMS enabling sequence?
I'd be interested to hear how this was approached with Cheesy Arena.
|
|
#4
|
||||
|
||||
|
Re: FMS enabling sequence?
Quote:
It's well known that the FMS doesn't communicate directly with the robot; the FMS informs the DS what state the robot should be in and the DS passes it along with the joystick information. What I don't know is whether the DS syncs to send a robot packet whenever it receives an FMS packet, or if it only passes on the enable signal next time its regular loop runs. If it's the latter case, then the order and timing of robot enablement is determined presumably by when each driver station process was started and by the DS-to-robot packet interval. Ideally, the DS should send a packet to the robot as soon as it receives an FMS packet that changes its disable/enable/auto/teleop state, regardless of when it last sent a packet. Someone could probably test whether it does this or not using Wireshark. |
|
#5
|
||||
|
||||
|
Re: FMS enabling sequence?
Quote:
|
|
#6
|
||||
|
||||
|
Re: FMS enabling sequence?
Based on things I've seen in the past, its a mix between ds, fms, fpga and the robot code itself. Based on my understanding I would say the fms actually affects it very little.
|
|
#7
|
||||
|
||||
|
Re: FMS enabling sequence?
It could be multicast to begin to deal with the delay of serially issuing the "change of state" messages.
|
|
#8
|
|||||
|
|||||
|
Re: FMS enabling sequence?
I would think that each DS is running its own polling loop asynchronously at ~50Hz (the rate of driver control packets). So even if the disabled bit toggles simultaneously for all six bots from the FMS (which it doesn't since the FMS->DS packets must be sent serially, but it ought to be close), there could be a 20ms swing in when each DS sends the first enabled packet depending on the phasing.
( I am just guessing at how the FMS and DS are architected here since I don't think it is publicly documented; please set me straight if I have made an incorrect assumption. ) Realistically, with our wireless links, synchronization is always going to be hard. |
|
#9
|
||||
|
||||
|
Re: FMS enabling sequence?
Quote:
|
|
#10
|
|||||
|
|||||
|
Re: FMS enabling sequence?
Please elaborate?
|
|
#11
|
||||
|
||||
|
Re: FMS enabling sequence?
In LV I know that it runs disabled for 1 extra loop after it receives an enabled packet. Then it will run auto on the next enabled packet.
Based on the last time I looked in the Java code, it will run auto init, then the next packet run auto periodic. So unless you are starting your sequence in auto init, it wont run motors until it gets a second enabled packet. Note that the whole time this is happening, the fpga is enabled, so it will run 20ms with the values it last receives. This is why there are times the robot jumps between disabled and enabled. |
|
#12
|
|||||
|
|||||
|
Re: FMS enabling sequence?
I do not think this is currently the case in Java (for IterativeRobot at least). It does check for the new data flag (via nextPeriodReady()), but this flag is not cleared after calling autonomousInit(), so autonomousPeriodic() should be invoked on the first packet
|
|
#13
|
||||
|
||||
|
Re: FMS enabling sequence?
Quote:
However, LV still does do this, and runs disabled one last time, and still has to wait for another packet to be sent before actually enabling auto. so auto in LV will have a delay of one packet before actually running auto code. |
|
#14
|
||||
|
||||
|
Re: FMS enabling sequence?
Here's a frame by frame of the Dallas Q39 (118 and 3310 in same match).
118 is going for their 3 tote auto, 3310 is going for containers, and a team 932 (middle of field red side) is driving forward at a high speed in auto mode. Frame 1 - Yellow lights on field illuminate Frame 2 - Red/Blue DS stack lights illuminate Frame 3 - Nothing Frame 4 - 932 tips back and begins movement Frame 5 - 932 continues to move Frame 6 - 3310 begins to drop arms Another frame by frame on Dallas F1 (118 grabbing from step, 148 auto) Frame 1 - Yellow lights Frame 2 - stack lights Frame 3 - Nothing Frame 4 - 148's arm moves Frame 5 - 118 drops arms From watching a few other matches, there is usually a different number of frames between lights and robot movement for teams like 118 and 3310. |
|
#15
|
||||
|
||||
|
Re: FMS enabling sequence?
Quote:
Any anecdotal or video "evidence" is rather worthless in this discussion without knowing a lot more about each robot (including seeing its code). If team X's arm appears to move at 0:00:00, but team Y's wheels start spinning at 0:00:20, how do we know which team got the "start auto" signal first? It is entirely possible that team Y's code is simply slower or explicitly waits 20ms. It is also possible that there are mechanical limitations that caused team Y to start visibly moving later. It would certainly be interesting to see some hard data on when robots across a number of matches receive the signals, but I wouldn't rely on any such data being universally accurate, nor would I hope to have perfect synchronicity in robot start times. Last edited by Bryan Herbst : 23-03-2015 at 17:28. |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|