|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools | Rate Thread | Display Modes |
|
|
|
#1
|
||||
|
||||
|
FMS enabling sequence?
The question came up this weekend in Sacramento as there were at least 3 fast auto can grabbers in the field: Does the FMS enable robots in sequence during auto, or simultaneously? And if its in sequence, is it known which stations enable in sequence and what is the delay between each station?
High speed video of 1678 and 971 in a semifinal match show that a delay could affect match outcome. |
|
#2
|
|||||
|
|||||
|
Re: FMS enabling sequence?
Quote:
|
|
#3
|
||||
|
||||
|
Re: FMS enabling sequence?
Same thing happened on Dallas week one. There were a couple of can grabbers and 118 showed us high speed footage that showed us not moving for ~60ms from when the opposing alliances robot was moving. We were told that the FMS does enable in a sequence but that's all we were told. Don't quote me on the last part.
|
|
#4
|
|||
|
|||
|
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. |
|
#5
|
||||
|
||||
|
Re: FMS enabling sequence?
Quote:
|
|
#6
|
||||
|
||||
|
Re: FMS enabling sequence?
I'd be interested to hear how this was approached with Cheesy Arena.
|
|
#7
|
||||
|
||||
|
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. |
|
#8
|
||||
|
||||
|
Re: FMS enabling sequence?
Quote:
|
|
#9
|
||||
|
||||
|
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.
|
|
#10
|
||||
|
||||
|
Re: FMS enabling sequence?
It could be multicast to begin to deal with the delay of serially issuing the "change of state" messages.
|
|
#11
|
|||||
|
|||||
|
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. |
|
#12
|
||||
|
||||
|
Re: FMS enabling sequence?
Quote:
|
|
#13
|
|||||
|
|||||
|
Re: FMS enabling sequence?
Please elaborate?
|
|
#14
|
||||
|
||||
|
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. |
|
#15
|
|||||
|
|||||
|
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
|
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|