Interative Opmode. 6.0 SDK. Same non-software mentor...
So thanks to several of you the kids have been reading all sorts of info and writing CSV files to the SD card and beginning to do various analysis. But in watching their code run I need to resurrect a topic some of you helped me with last July. They have Bulk Reads working in MANUAL, and have successfully gotten their odometry deadwheels reading "simultaneously enough" to have their odometry math keep working as the robot drives around fairly quickly. In adding a bunch more hardware reads though, they kinda broke things and loop times jumped up. And things look to me like some of the reads they are doing are not "bulkable" ; and while they have all their hardware info .get's in one organized spot in loop(), right after a manual cache clear, they have mixed bulkable and non bulkable reads.
Previously, it was kindly explained to me that the following were bulkable:
- And thus are .get's via the Lynxmodule class for hub voltage and current non-bulkable?
- How about motor *current* and such from the DCMotorEx class?
And, while I am on the subject:
- Does the bulk read process "care" about order? That is to say, can you freely mix hardware reads ultimately directed at things plugged into the Control Hub vs the Expansion Hub? Or is it more efficient to, say, order the series of .get's such that the Control Hub requests happen in a group followed by the Expansion Hub ones, that the bulk read process can more efficiently make use of the serial line between the hubs or something?
- Even with bulk reads in use, what is the actual delay in hardware between, say, reading two encoders plugged into the same hub? And is that delay the same for the Control Hub as the Expension Hub? I want to make sure the heading-deviation noise/wobble they are detecting in their data is coming from their odometry pod suspension bouncing around vs possibly some time shift between actual snapshots of the encoder values.
Thanks in advance
Coach Z
So thanks to several of you the kids have been reading all sorts of info and writing CSV files to the SD card and beginning to do various analysis. But in watching their code run I need to resurrect a topic some of you helped me with last July. They have Bulk Reads working in MANUAL, and have successfully gotten their odometry deadwheels reading "simultaneously enough" to have their odometry math keep working as the robot drives around fairly quickly. In adding a bunch more hardware reads though, they kinda broke things and loop times jumped up. And things look to me like some of the reads they are doing are not "bulkable" ; and while they have all their hardware info .get's in one organized spot in loop(), right after a manual cache clear, they have mixed bulkable and non bulkable reads.
Previously, it was kindly explained to me that the following were bulkable:
- All digital inputs
- All analog inputs
- All encoder positions
- All encoder velocities
- All motor statuses (e.g. H-bridge over-temp)
- And thus are .get's via the Lynxmodule class for hub voltage and current non-bulkable?
- How about motor *current* and such from the DCMotorEx class?
And, while I am on the subject:
- Does the bulk read process "care" about order? That is to say, can you freely mix hardware reads ultimately directed at things plugged into the Control Hub vs the Expansion Hub? Or is it more efficient to, say, order the series of .get's such that the Control Hub requests happen in a group followed by the Expansion Hub ones, that the bulk read process can more efficiently make use of the serial line between the hubs or something?
- Even with bulk reads in use, what is the actual delay in hardware between, say, reading two encoders plugged into the same hub? And is that delay the same for the Control Hub as the Expension Hub? I want to make sure the heading-deviation noise/wobble they are detecting in their data is coming from their odometry pod suspension bouncing around vs possibly some time shift between actual snapshots of the encoder values.
Thanks in advance
Coach Z
Comment