[A-Pod] Legs collide during fast rotation

If i let rotate my robot slow, everythink works fine.
Walking in every direction, too.

But if i let him rotate with maximum speed (stick left or right at maximum) two of the legs will collide.

The Phoenix might have different distances between his legs, so i think its a problem with the programmed limits.
Im not sure if it is clever to change them, because i don’t know whether the walking routine will considered that.

It’s hard to explain what i mean.
If one leg has a different moving range as the leg toward, the robot will go a slightly curve (it does already, but this comes later).
But…that’s a guess.

The other thing is to limit the maximum value of the steering stick for rotate in the software. (if this is possible…i don’t know)

Which way should i go?
Do anyone have the same problem?

greetings, Andreas

Did you calibrate all servos before uploading the code?

Yes, i have used the “SSC-32 Servo Sequencer Utility” for that.
It has a calibration mode. I hope it wrote the values in the registers of the SSC.
But if i launch the Servo Sequencer Utility again, without loading a project, and press “Center all”, it looks good.
So i think, the SSC has stored the values.

Good to know. A video would be nice showing a slow walking gait.

I will make a Video, but first there is another problem with the calibration and the offset values.

Could it be that the new SSC-32U is different from its software, to the old version?
I mean the kind of handling with the offset registers.

For that i have made two pictures.
They are taken from a tripod without moving the robot.
To see the difference you should switch them fast like a video.


Image 1


Image 2

Image 1 is taken after powering the robot on without computer.
Image 2 is taken after connecting the SSC to a computer with Servo Sequencer Utility running, but NOT loading a Project. Just click on “Center”.
Now i had removed the USB cable, robot is still under current. I have activated the remote control and pressed “start”.
Whats that? Servos in center without computer…

There are following possibilities.

-The PhoenixCode can not use the offset values, because it didn’t get them. (My question about the changed code-interface on the top of this topic)
->After connecting the SSC to a Computer the servo sequencer tool will activate or set something what will activate the offset values. (I have no idea)

-The offset values are NOT in the SSC yet they will be transferred temporary by connecting the SSC to the computer. (But How? I did not open any Project in the servo sequencer tool!)

What can that be?

After houres of testing the result is:
The SSC have the values stored but do not use them.
The servo sequencer read them out of the eeprom and write them back into the volatile memory.
That is the reason that the robot set the correct center positions after it was connected to a computer.
And only then!
The SSC can automatically transfer these values from the eeprom into the volatile memory.
Register 0, bit 2.
No hint in the tutorial about that.

But now, back to the main problem with the legs.
I will try to make a Video but this will be tricky, because the cam have to be mounted on the robot for that.
And I do not know if 30 ~FPS would be sufficient to capture the collision.

It sounds like the offset values are not being saved. Can you use Lynxterm to ensure the offsets are stored in the SSC-32U?
lynxmotion.com/p-567-free-do … xterm.aspx
Ensure you have the right Baud rate, COM port etc. before connecting. Use the “Reg” button at the bottom, then “read”.
Offset each servo, then when done, click “write”.

The problem is solved.
With porting the code to botboarduino, the values for g_InControlState.TravelLength have been changed.
I have setted them to the original values like in the Basic AtomPro code.
The problem with colliding legs is now only in “double travel length-mode” present.
To compensate this, i have set the divisor depending on the position of PSS_RX.
That means for activated double travel length:
If the right stik is in the TravelDeadZone, the values are untouched.
If the stik is out of this range, i set the “normal” values for travel length.
That`s it.

We are happy to hear you have been able to resolve the issue and apologize for any inconvenience.
We would love to see a video of your setup!

Here is a little Video. It shows walking and some other functions.
(I have not finished yet, but i will work on)

greetings Andreas

Hi napfkuchen_mit_speck when you turnleft or right or rotate (travleLengthY ) . Abdomen it moving around mid point 1500ms ?