Asked — Edited

Wildly Gyrating Servos On Board 1

I have been using both board 0 and board 1 lately. When I connect to a robot through Board 0 and go directly to a frame on the corresponding Auto Positioner, and click "Transition To" all goes fine and the servos go to the proper position immediately as normal. However, when I try the same thing by going through Board 1, the servos go wild, some going to their opposite extremes and banging things about. They then go to their correct positions in a normal transition manner. Problem is that first jerk of the servos. I'm sure it's not good for them and certainly not good for the stuff attached to them.

To isolate anything in the project in which I was working causing a problem, I created a brand new project with the following:

Both Connection 0 and Connection 1 go to the same robot's EZB-4. I put in 2 Auto Position Controls; one movement type, which only goes through Board 0, and another non-movement type, set to Board 1. I exported all the setups in the first Auto Position control to a file and imported that file to the second Auto Position control so they would both have the same exact things in them.

Both have a "STAND" frame. It is that frame on which I ran my tests. Though the others will have the same results.

First, I connected to the robot through Connection 0. I then went right to the Movement Auto Position, selected "STAND" and clicked "Transition To." That worked fine with a minimum of extraneous servo movement before going to the correct positions.

Then I disconnected from 0 and connected to the robot through Connection 1. I subsequently went directly to "STAND" in the other Auto Position control and clicked "Transition To." Everything worked fine ... this time.

Then I disconnected and reconnected again through Connection 1. When I clicked "Transition To." for the "STAND" frame, the servos went wild before settling back to their correct position. If I disconnect and reconnect through Connection 1, the servos go wild again. Same thing every time I disconnect and reconnect through Connection 1

Somehow, going through Connection 0 first and doing the "STAND" thing has some sort of "calming" effect such that the first time I connect through Connection 1, all is well. After the first time, however all is not well. After that first time, everything works OK through board 1 as well, but that initial jerking around can be a killer to the robot's parts. Perhaps the first time going through Connection 0/board 0 leaves some initial values in memory that are used by the servos when going through Board 1 the first time. Just a guess.

I can't actually do the going through Connection 0 before going through Connection 1 thing in the actual project. So I'm wondering if something can be done to stop those wild gyrations when using Connection 1/Board 1?


ADDITION* After some more tests I found that the problem does not occur when I do the connect and "STAND" thing the first time after starting the project (even without doing the calibration for board 0 first). It is when I disconnect and reconnect the connection to Board 1 after that first time that the problem occurs. So it seems the best thing to do for now is shut down the project and restart it if I have to re-do connection 1 for any reason, such as losing contact due to other circumstances.

This all came up due to the fact that the connection is lost when I have the camera resolution set to the highest resolution setting and stop it. The unit disconnects from the EZB-4 for unknown reasons. That's, of course, a separate fault and is not related to the above problem. But it was that occurring that made me have to reconnect board one, leading to the servo gyrations. Lately the camera thing has not only been disconnecting from connection 1, but also often crashing the program such that the program shuts down completely.


Upgrade to ARC Pro

Become a Synthiam ARC Pro subscriber to unleash the power of easy and powerful robot programming


I have experienced the camera problem many times. No further explanation though. As for the servos, I may be able to test this when I'm at home. Will be worth a shot, which will tell you if it's your program or not.


Maybe each time you reconnect you should try to initiate the servos again with your at rest servo position then set the speed to zero. Then try sending it to the wanted position at the speed you want.


If you could provide a shorter more direct explanation of the issue, i should be able to assist. I'm sure it will be a quick easy solution :)

I use many Auto Position controls at once. For example, in my Ted talk 3 days ago, i controlled 5 robots on stage at the same time from a single WiiMote controller. They each had an Auto Position control on separate boards.


@DJSures Yeah, I do tend to get verbose trying to cover all the bases in my explanation . :D

So, I've decided to try a different approach with a specific example and a step-by-step list of what to do to repeat what I am seeing. The name of the project I uploaded is JD Multi-Board

To do this I have taken the Official JD Example from the cloud and removed anything not relating to the Auto Positioner. Also I have added another Auto Positioner for Board 1. Additionally I have added another Init file for Board 1. It is just like the original for Board 0, but with the dot-board number added to the servo references to make the commands go to Board 1. I have rem'd out the CC for going to the calibrate position since it makes no difference if you do that or not. Additionally it only works for connection 0/board 0 anyway.

The frames in both Auto Positioners are identical. The ones in the new Auto Positioner (Auto Position Board 1) were loaded from an export from the original Auto Positioner.

Again, the following instructions use the "STAND" frame in both Auto Positioners. Any frame could be used but that is convenient.

  1. Bring up the project (JD Multi-Board)
  2. Connect to your JD via Connection 0 as usual.
  3. Go to the movement Auto Position control and select frame "STAND"
  4. Click "Transition To" ... JD should go to the STAND position as normal.
  5. Disconnect.
  6. Repeat Steps 2 through 5 a couple of times.

Nothing unusual should happen here. I just wanted you to do it to see how it behaves using Board 0 as opposed to Board 1.

  1. Disconnect from Connection 0
  2. Connect to JD via Connection 1
  3. Go to the "Auto Position Board 1" control and select frame "STAND"
  4. Click "Transition To" ... JD should go to the STAND position as normal.
  5. Disconnect from Connection 1

************************** WARNING *************************** You may want to remove the arms from JD's body to prevent breakage of arm sockets (like happened to me). Might be prudent to remove the legs too. You won't get the full effect of what is about to occur without them attached, but it should be graphic nonetheless.

  1. Connect to JD via Connection 1 again
  2. Select "STAND" on the Auto Position Board 1 control again and click "Transition To"

That should do it. Try disconnecting and reconnecting Connection 1 again and selecting "STAND" (or any frame for that matter) if you wish. It should do it every time after the first time.

BTW, I do it here in Client mode.