Communication speed with Maestro

Hi

I am using vb to make a custom sequencing program, but finding as I increase the number of channels,the rate of update is slowing down. I assume this is because each extra motor requires another call via USB and this is slowing things down.

I am using the TrySetTarget routine and the program connects with the “Temporary native USB connection using Usc class.” as in the vb sample program.

Now - I actually want to control about 96 servos altogether and change their positions quite quickly if possible.

Is there a way to send commands to the Maestro faster than the default, or is the USB link always going to be the limiting factor?

Thanks Gerald

Hello, Gerald.

The TrySetTarget method in MaestroEasyExampleVb actually does a lot of work: it makes a list of USB devices, selects one, and opens a handle to it. As a first step, I recommend that you make a function similar to TrySetTarget that takes an array/list of targets so that it can set the targets of all the servos without having to do all that work for every servo.

If that isn’t fast enough, you should consider keeping that Usc object around permanently and just directly use its setTarget method.

If that still isn’t fast enough, it can actually be faster to use the Maestro’s virtual COM port instead of the native USB interface and send a “Set Multiple Targets” command.

That really should be fast enough, but if not then you can try making a different thread for each Maestro and doing the I/O in parallel.

By the way, a project with 96 servos in it sounds very cool and we would love to see a video when you are done with it.

–David

Thanks for the quick response. I thought it was connecting each time and this might be adding unnecessarily to the process. I’ll see how I go, and send some video once I get the physical side also sorted…