There are several issues that've been reported w/RoboRIO USB port conflicts that are likely coming into play here:
1) One of the authors of the WPI library has indicated that the USB serial port enumeration (which locates the USB serial device using an identifier like 'kUSB') may not work correctly when a USB hub is used.
2) When USB cameras are used, we have found that the WPI library call to open the USB serial port may fail unless there is a 1-second delay after opening the USB camera before initializing the AHRS instance (which opens the USB serial port).
So based upon these known issues, the recommendation is:
- Move the navX-Micro off of the USB hub, and into the top-most of the two USB ports on the RoboRIO.
- In the robot application, first initialize communication to all USB cameras, then wait 1 second, then initialize the AHRS instance. It sounds like your initialization order is different.
We have never tried the exact configuration you are using, which is unique in two ways: 3 cameras are involved, and a USB hub is involved.
We have heard of 3 USB cameras being used, but the solution other teams have taken is to route them all into a Raspberry Pi, and then either perform vision processing on the Raspberry Pi, or route the video streams to a MJPG streamer on the Raspberry Pi (to view them at the Driver Station). So since this is a configuration that's new to us, please let us know your findings.
P.S. You also have the option to communicate w/the navX-Micro via I2C, although USB should work.