Asked — Edited
Resolved Resolved by Rich!

Looking For The Right Control

I'm trying to decide which is the best control to use when operating three servos. Right now I'm operating them through timing in scripts. It works OK but sometimes they get in the way of each other. Looking through the controls I think there may be a better way to do this.

Here's what I have and what I want to do: I have a main servo that raises and lowers the bubble. The bubble lifter rests at about the midway point on blocks and this is where it stays most of the time. When I want the bubble to lower to it's lowest position I have two smaller servos pull these blocks out from under the bubble lifter so it can go down. I have the two smaller servo control cables spliced together so I only have to use one port on EZB and they move in tandem. Here's a pic and a vid to help:

User-inserted image

Now, I see there are different servo controls that may help pull the small support block servos out whenever a command is sent to lower the bubble all the way. Most always scripts will be doing this. Which in my case would be the best to use (if any): Auto Positioner Multiple Servo Relative Servos



Upgrade to ARC Pro

Unleash your creativity with the power of easy robot programming using Synthiam ARC Pro


Perhaps use micro switches so you have feedback. That way in your script you can place a "if" statement to check if the switch is tripped before moving to the next movement.


Ok watching the video closely I can see that it has to pause and raise before the block can be slide under the mechanism. I believe if you made a new block that was angled with multiple knotches that you could raise and lower your neck smoother without that pause. I can draw it for you. It looks like only the white plastic blocks would need to be changed out.

United Kingdom

I'd stick with scripts. There are commands to check the position of a servo rather than using feedback microswitches.

So you could wrap any servo commands in IFs to check if the servo is safe to move...

I'm at work right now but I'll try and expand later. It makes more sense in my head than it does in the above couple of sentences... :)


Thanks Josh and rich. I havent had muchtime to play with the scripting as I've been working on the build it's self. However I was looking at all the controlls and thought some of them looked like they may work better then what I had been useing. However after thinking this through all my functions will be run through scripts for now and having these controlls may not be useful. I did however see some script commands for these controlls. Anyway....

@Rich , I look forward to seeing what you come up with. I'll alway welcome a fresh idea and a little guidance.

@Josh , I think I understand what your suggesting. If I step down or angle the inside of the support block the lifting fork that rests on it will have a cleaner transition as they both slide appart and together. Very nice idea. Thanks!


I agree with Rich's idea. It should work without having to add/modify more to the mechanism. Keep it simple. Good luck to you.

United Kingdom

I've attempted this a few times but each time I've either been disrupted and lost my train of thought (the effects from living on a few hours sleep a night for a few weeks) or I've not been entirely convinced by my answer.

I think scripting it would be the best option (I am biased though since I prefer scripting to the built in controls - once I get hold of Six I may become a huge fan of the Auto Position though).

What I'd do (and have attempted a few times but always get distracted) is list out the conditions of when each part needs to move. I.E.; If going to low position then blocks need to move out of the way, then lifter needs to drop down then release everything. If going to neutral position lifter needs to move to correct position then blocks need to move in and then release everything. If going to high position the blocks can be in either position (you choose), if it's going to high from neutral then you don't want to move the blocks first thus avoiding the possibility of a small drop between the blocks moving and the lifter taking the weight. But if it's low and moving to high then the blocks can't move until the lifter is beyond the neutral position.

Convert that to an IF nest;

IF($liftpostion = $neutral AND $newposition = $low)
  ControlCommand("blocksout", ScriptStart)
  ControlCommand("movetolow", ScriptStart)
ELSEIF($liftposition = $neutral AND $newposition = $high)
  ControlCommand("movetohigh", ScriptStart)
ELSEIF($liftposition = $low AND $newposition = $high)
  ControlCommand("movetohigh", ScriptStart)
  ControlCommand("blocksin", ScriptStart)
# Etc etc etc

It would mean writing scripts for the movements (you could rewrite the same code over and over rather than controlcommands if you wanted though), but it would do everything in the right order.

The more I try and write this the more I think "that already works, why change it?" though.

I'm still not entirely convinced I've explained how I wanted to, or if it makes sense, or even if it's any better than what's already in place but after trying to write it about 5 times I'm just going to hit reply :)

Hopefully it's of some use.


@Rich, your efforts are warmly welcomed and your grasp of what I'm trying to do here is amazing. I cant imagen what you would come up with with a few full nights sleep.

The fact that your working so hard to come up with a better way to do this other then what I've already done tells me I'm very close. In the movement scripts I've already witten I'm just useing servo position commands with sleep commands. I like what your suggesting with your IF statments. It has built in safeguards that make sure the support blocks are in the right place at the right time. Very smooth. I need to sit down and try to get this process into a script that will work in my project.

Thanaks for your efffotrs Rich. It's great to have minds like yours and others here that are so sharp and full of great ideas. :)