ServoOrchestrator (at least a try) & a (my) call for testers

UPDATED 16.11.14 (not the picture)

In the other service I came up with (it started small, but got big very fast) (-> & )
GroG asked, if it was meant to become a "(Servo-)Orchestrator", it wasn't,

but this idea didn't released me and by hazard I found an (old) sample of me:

a bad Drag-And-Drop-Window (just horizontal and very simple), I kept on this and modified it to perform 2D-Drag-And-Drops.

After this I tried to bring it in a nice and useful shape - and now it is there (at least it is a start).


But there is something that this program really needs - Testing!

I know, that it can move 1 servo, but I don't know about the timing and if it works with more than 1 servo.

Another point to test is, if the start-/goal-values are updating themselves always (right), I would believe not.

But I would really like to know, if this it's main part (timing the servos) is actually working.


USING (basic):

1. a) start a Python-service

    b) type so = Runtime.start("so", "ServoOrchestrator")

    c) execute - the service should be running

2. a) start a Arduino-service

    b) connect it to your Arduino

3. a) hit settings under "Channel 1"

    b) select your Arduino and servo-pin

    c) click "Attach"

    d) if there comes an new Servo-tab up, the first thing worked <- I'm happy!

4. a) you could attach other servos, too, but 1 is enaugh for now

    b) you can edit the name, min, max for a channel (besides Attaching/Detaching) when you click on the Settings, but hit "Update" after it!

5. a) With the button on the top ("Add Servo") you can add movements for the servo

    b) fill in "GOAL" your desired position

    c) you can move the panels freely on the screen

    d) drag them to the upper left corner to delete them

6. a) click on the 7. button at the bottom to "play" your movements

    b) hit the 6. button to stop it



- some other things/functions work, but not everything in the GUI is implemented, yet

- I recommend to don't use build-in servos for it (e.g. InMoov's) - there could always be an errror

- when you know Cubase this programm should look similar to you (I got inspiration from it, although Cubase looks a lot better)

- it plays a "click" when it gets to an new block, you can switch it off, it should mark when a new block beginns

- write suggestions/errors/bugs/etc. !!!


Which buttons & fields are implemented at this point?

green border -> implemented

red border -> on the list


 NOTE: Generally I don't have much time recently, because school got busy with exams and so on, and a informatics competition is pulling my time away, but I try to get time to spend here on & write programms.


I don't know, if I forgot anything, but my last words (for now) are:

Thank you MRL( & -'ers) & InMoov(& -'ers) - and - ENJOY!

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
GroG's picture

Great Work Ma. Vo. ! I can't

Great Work Ma. Vo. !
I can't wait to try it.  I'll also hook it up to the self tester - so we can get automated tests on each build. 

I still have not made auto-build work for everyone, but I understand that it must be done.. I'll work on making an easy release mechanism..  I have an idea - it would just be changing the target of the build.xml file to "release" then checking it in .. but I dont have all the bugs out...

Your Swing capabilites are impressive, do you use a GUI layout tool, such as WindowBuilder, or the integrated GUI tool in netbeans (I heard it was good)..  All the Swing work I have done has been hand tooled, and I'm not sure I'm that interested in learning a new Swing tool as my preference at this point is to dive into AngularJS & HTML5

Thanks for a great tool Ma. Vo. excited to try it !

MaVo's picture

Thanks, but the things you

Thanks, but the things you are doing aren't seen directly, you work mostly in the "background", but these things are even more important ... Self-testing ... automated-build ...

No GUI-tool, even though the designer in NetBeans is good, I don't like it. This is basically build around a 1 dimension drag and drop with panels example from the Internet. I modified this to work in 2D and the rest is build around it (I think it uses ~5 classes only for the drag and drop thing ...).

Try it, find the bugs and kill them! I'm very curious, if it works with more than 1 servo and if the timing is correct ... (I only can try with one : ( ).

But HTML5 & etc. would be great!

kmcgerald's picture


I just played with the ServoOrchestrator service a little to see how it's progressed.  One thing that would help a lot right now is a screen shot of it with things labeled (maybe saying what is or isn't implemented yet).  For instance I'm not sure what the "M" and "S" buttons are for on the Channel cells. I also dont' have a firm understanding of what the numbers next to L and R in the bottom panel are for. The POS number looks like it is incrementing through the Timeunits as I click "<<" or ">>" but the other two number fields next to that don't seem to move until I click "|<" or ">|" buttons.

I found a small display bug but it's not a huge issue.  I added an extra channel so I had 6 and then I clicked settings on each and set their names, min, max and clicked update.  That all worked well.  Then I added another channel and when the GUI refreshed, the names on each channel refreshed to "Channel 1", "Channel 2" and so on.  If I clicked settings for each I could see that the values I set were still stored and all I had to do was click Settings and then click Update to fix the displays. Like I said it is mostly just cosmetic but something that should be fixed.  The only other issue is that the numbers in the middle of each "cell" change when you add a new channel or timeunit and is a bit confusing/shocking at first.  I'm guessing those numbers aren't of much use to the actual user and might be better off being hidden.

MaVo's picture

Hey, thanks for testing! I

Hey, thanks for testing!

I will go thorugh your points shortly:

Screenshot - adding it to my list

"M"/"S" are mute/solo (not implemented) - thought you could disable one channel (servo) easily (or play only some)

L/R -> wanted to make some markers, so you can only play a specifc section (maybe in a loop) & for export things ...

POS -> the Timeunits are counted in the first number and the remaining are a bit cosmetic (wanted to fake "music-creating-programs" with that a bit (specfic: Cubase, where I copied some other basic things)

You are right about the arrows and their effect (by now).

The bug: Yeah I noticed it and marked it, but didn't fixed it by now, it will be the first thing I'm going to fix.

"The numbers" -> the numbers are the IDs of every panel, mainly for debugging-purposes, yeah, I could hide them.

Thanks for your feedback, just one question: Did you tested it with servos? I still don't know if it's synchronizing them in a good way.

kmcgerald's picture

I didn't plan on testing the

I didn't plan on testing the servos while I was testing the UI. I'll try to test it at some point with my ROFI robot. He has 12 servos to test with.