Artificial Intelligence

Thoughts and Ideas

Adversarial Inference and Motion Controllers

This is neat.

When thinking about a powerful compute engine, one must also think of power consumption. I was thinking about this with respect to the Myriad 2 vs the Myriad X. To get enough compute capacity I'll need more more than one Myriad each of which needs about a watt of power. Then I thought about the motors, each motor uses about 1 watt of power.

Then I realized a possible adversarial system seeking equilibrium. The equilibrium between motors that just want to run and compute engines that just want to think.

more to come, but this is a very interesting idea!

Learning Power Efficiency

Determining the voltage and current used at different points within the motor controller and digital electronics can be monitored at a sufficient sample rate (say twice the Nyquist rate for human head motion frequency) cheaply and simply.

This would be an excellent source of data for an AI to train on.

If we gave the AI the ability turn all the knobs on all the hardware on the Somax platform and said "minimize the power and current to all systems while maintaining a baseline performance" what might the network learn to do?

Could this be extended to add context, so that the settings used are based on power savings when the operational baseline is dynamic. For example, at night we can turn off or limit this use of the RGB camera (thus having a different operational baseline from daytime operation) without diminishing the quality of the data captured. Could we train a network to do this automatically?

A Specific Application for Learning Power Efficiency

September 5, 2018

Development of the Motion Controller has run up against the first power brown out. The brown out caused a reboot each time.

The problem was partially mitigated by heuristics to sequence motor power up and also by reducing the step resolution from 400 to 200 per revolution. Additional savings were gained by implementing a power saving algorithm called a current chopper which causes stepper motor phase pulses, needed to maintain position, to be replaced with a very high ratio of motor off commands. These efforts allowed all motors to be powered up to idle state. However, only two motors were able to be moved at while all three were powered on.

It should be possible to keep all motors moving while maintaining the power budget of 18 Watts total maximum system momentary power requirements. This can most likely be achieved by using a combination of current chopping and sequencing of when all motors are and are not chopping so that no combination exceeds the total power limit.

The solution will also need to take into account the current angular inertia that need be counter balanced with holding torque to maintain position. Think of trying to paddle a canoe up stream, you first must go the velocity of the river before you can accelerate, much in the same way as holding torque must be maintained before angular acceleration is possible. Current chopping reduces power consumption at the expense of holding torque so to maintain adequate holding torque only so much current may be chopped. The math of this problem is complicated by holding torque requirements that can by axis, be different for different gimbal orientation combinations.


If it were possible to move to all possible positions and then measure the current for all possible motor combinations, then it should also be possible to use a neural network to find a fast lower dimensional solution, if one exists. Since the system is closed and need not be generalized to all Somax motor controllers, it can constrain to a much small space of specific Somax motor controller. This space would be made up of motor phase snapshots on phases IN1 and IN3 p(full stepping) for all motors. This would be machine labeled with the maximum current recorded while sampling the states current draw of the entire system.


Moving all motors at the same time would cause a brown out and thus be impractical for collection of data at high speed. The same pattern should also be detectable by predicting the current draw when various combinations of motors , less than the brown out limit is allowed to move while the others are powered on but not moving for training. This method is less destructive to the system than swapping power supplies though the later should is another path of investigation. The "system-supply" instead of "external-supply" solution would be logically a first path of investigation. No matter the path, the output of one network should be transferred to successively smaller networks and perhaps a deep network to reduce the dimension of the input until it reaches an accuracy threshold that is ever so slightly and very non-linearly biased to accuracy over overall solution space dimension.

A neat architecture to ponder. Like a binary classifier on top of a stack of auto encoders. A good start right off the top of my head. Need to do some research on prior works and maybe even find a better way.


Thinking a bit more, it also has some face value properties of a Knap Sack Problem. Maybe some bounds from knap sack problems can be used to reduce the problem space.