The-Charge / SulfuricAcid2020

Repository for Infinite Recharge 2020 Season using the updated WPI libraries
0 stars 0 forks source link

USB Connection to Nav-X board. #3

Open abcurrie opened 4 years ago

abcurrie commented 4 years ago

Investigate what changes to the Nav-X board communication are needed to go from the MXP connection to the USB connection

abcurrie commented 4 years ago

ahrs = new AHRS(SerialPort.Port.kMXP); / Alternatives: SPI.Port.kMXP, I2C.Port.kMXP or SerialPort.Port.kUSB /

abcurrie commented 4 years ago

https://pdocs.kauailabs.com/navx-mxp/software/roborio-libraries/java/

Shalmezad commented 4 years ago

Just a quick note, it appears there are limitations when using the USB: https://pdocs.kauailabs.com/navx-mxp/guidance/selecting-an-interface/

abcurrie commented 4 years ago

The principal limitation is that the USB interface does not support the GPIO ports to extend the roborio's capability to add additional DIO ports and the like. For using the Navigational capabilities for gyro and acceleration I do not see any limitations. The only caveat may be a minimal degradation in serial interface communication speed. Let me know if you see or find otherwise.

On Thu, Feb 27, 2020 at 8:06 AM Richard Wardin notifications@github.com wrote:

Just a quick note, it appears there are limitations when using the USB: https://pdocs.kauailabs.com/navx-mxp/guidance/selecting-an-interface/

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/The-Charge/SulfuricAcid2020/issues/3?email_source=notifications&email_token=ABQRZA7OFMGD6KQZZSGJK3TRE63GJA5CNFSM4K4SMFWKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOENEJYNI#issuecomment-591961141, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABQRZA7WNEH2VGOZ4FPDNWDRE63GJANCNFSM4K4SMFWA .

Shalmezad commented 4 years ago

There's a couple limitations in the link I posted (last point under Recommendations)

  1. "MXP IO support is not desired", which would be the additional DIO ports you mentioned. Shouldn't be a problem for us.
  2. "only Processed or Raw Data (not both)", I'm fairly certain we're always using the processed data, which the default constructor for SerialPort gives us. So also shouldn't be a problem.
  3. (the important one) "please note that in certain cases when other USB devices (e..g, cameras) are connected to the same RoboRIO USB bus, and are used simultaneously with navX-MXP, sometimes the communication is interrupted. For this reason, USB is not recommended on the RoboRIO, especially if you are connecting with other USB devices on the same USB bus.", I'm taking a wild guess we're using a USB camera on the robot.

Other than that, latency is a tad higher than SPI, but speed is significantly higher (12mbps vs 2mbps), not that it matters too much for our use cases.

Out of curiosity, what is the basis for looking into using the USB connection as opposed to getting an extension cable for SPI or even going I2C?

abcurrie commented 4 years ago

Going question. The driver to based on the fact that we had to relocate the board off the roborio. So we have a long ribbon cable connecting the two. Going to a usb cable would give us a smaller, more easily routed cable. Since the camera's are going into the Raspbetrry Pi's we have no conflict with them. Thanks for crosschecking.

On Thu, Feb 27, 2020 at 11:12 AM Richard Wardin notifications@github.com wrote:

There's a couple limitations in the link I posted (last point under Recommendations)

  1. "MXP IO support is not desired", which would be the additional DIO ports you mentioned. Shouldn't be a problem for us.
  2. "only Processed or Raw Data (not both)", I'm fairly certain we're always using the processed data, which the default constructor for SerialPort https://www.kauailabs.com/public_files/navx-mxp/apidocs/java/com/kauailabs/navx/frc/AHRS.html#AHRS-SerialPort.Port- gives us. So also shouldn't be a problem.
  3. (the important one) "please note that in certain cases when other USB devices (e..g, cameras) are connected to the same RoboRIO USB bus, and are used simultaneously with navX-MXP, sometimes the communication is interrupted. For this reason, USB is not recommended on the RoboRIO, especially if you are connecting with other USB devices on the same USB bus.", I'm taking a wild guess we're using a USB camera on the robot.

Other than that, latency is a tad higher than SPI, but speed is significantly higher (12mbps vs 2mbps), not that it matters too much for our use cases.

Out of curiosity, what is the basis for looking into using the USB connection as opposed to getting an extension cable for SPI or even going I2C?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/The-Charge/SulfuricAcid2020/issues/3?email_source=notifications&email_token=ABQRZAYDTFJGZIOZDZXE4V3RE7Q7JA5CNFSM4K4SMFWKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOENE5SRA#issuecomment-592042308, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABQRZA3PKXXRVSTUSRVZWLTRE7Q7JANCNFSM4K4SMFWA .