How does the decreased current affect the robot when using more than 8 motors

It has no impact on VexU. The essence of the change is that when counting motors for the purposes of current limiting, a 5.5W motor is considered “half” of a motor.

Until this fix is released, is there a good way to enable students to use the full 88W we are meant to have access to? Would reducing the current limit to half have a noticeable effect on the performance of 5.5W motors?

I honestly wouldn’t worry about it too much. for a typical high school robot you really won’t notice much difference unless you went down the path of using sixteen 5.5W motors and, with the current trend of using six 11W motors for the drive, I don’t see anyone doing that. You can also see peak power in the graph occurs somewhere around 65% of max rpm, and current is actually a little lower than 2.5A at that point and power higher than 11W.

I know you mentioned that it would be a low priority to code a JavaScript version of the algorithm for determining the amperage of the motors. If that is too much work would it be possible to release just the algorithm that is used by vex is and allow the community to interpret it? Would this be possible for vexos 1.1.3 when it is released?

And just for my own curiosity, what language(s) are vexos programmed in?

Actually, you will find one I helped the Purdue team create on this page.

C language, some assembly code.

Good post:

image

It’s important to keep an eye on the big picture here. Heat is a critical part of that.

Additionally… the total current limit of 20A. That’s a fairly high number for the small-ish wiring & connectors in the system. Probably a safe limit, when looking at heat generation and component stress, to keep things at.

I’d be interested to look at the connector temperature on an old cable/battery compared to a new cable/battery after a good stressful run.

My guess is that you can use instantaneous value that vex::motor::efficiency() reports to determine, otherwise unobservable, applied voltage that may be different from the requested voltage and know if there is any current limiting being applied by the internal vexos algorithm.

Why would this be important? If you want to accurately model internal motor state, including its internal temperature and heat gain/dissipation rates, then you want to also know the state of the vex current limiter control algorithm that would break your linear dependencies in your integrator that estimates those parameters.

Then you can alert your driving team how aggressively they could drive depending on how much heat could still be pumped into the motor before triggering mandatory current limiting by vexos.

Similarly, for the autonomous routine that supposed to work in various air temperature/humidity conditions and with potentially deteriorating situation with friction/ resistance in various parts of the robot, you can estimate how much more aggressively you can push your motors. You want to move fast, but not too fast to trigger current limiting on one side of the drivetrain, which could ruin your controllability and accuracy for the rest of the run.

or you could just call the voltage() class member function and read internal motor voltage directly.

double voltage( voltageUnits units = voltageUnits::volt );