How to run servo_zeroing.py after pidog has been assembled?

I went through the assembly of the pidog and believe that I zeroed each of the servos as I went through the assembly. However, when I turn the pydog on and attempt to run calibrate, it puts the dog in a very awkward position and I am unable to get the legs in position using the calibrate script. So I attempted to run the servo_zeroing.py but it hangs on servo 11. I’m not quite sure what to do at this point. Do I zero out each servo individually and then run calibrate? I apologize, but I really don’t find the servo_zeroing.py instructions very helpful. I have watched the videos, but now that I am troubleshooting a fully assembled pydog, I’m stuck.

Questions:

What is servo 11 and why might it be hanging?
Can you provide me specific instructions on how to zero out the servos now that the dog is assembled…and please don’t tell me I have to take it apart :).

When the servos are delivered, they could be anywhere in their range of motion.

However, they need to be close to their centre position during assembly. So, the zeroing script sets the servo pwm to move the connected servo to it’s mid position, such that it can be assembled correctly one by one.

The final calibration can only make small electrical adjustments from any mechanical misalignment.

My personal best guess is that something went wrong during the initial alignment of steps 11 and 15 through to 19. I am referring to the steps here as numbered in the pdf instructions.

If this is the case, you may need to disassemble any such servos in the dog and zero again.

Thank you for the response. I did understand the purpose of the zeroing out. I’m unsure where I went wrong, but I obviously did. I’m not happy to hear that I have to disassemble, but that’s where I am. Thanks for the response.

Can I ask a follow-up question on this? What wasn’t clear to me was the significance of the PWM11 and PWM5 pins. Am I right in understanding that PWM11 is used to zero out the servos for the legs and tail and PWM5 is used to zero out the servos in the head/neck?

Yes, that is correct. 11 for legs 5 for head.

The code does appear to zero all simultaneously though

for i in range(12):
print(f"Servo {i} set to zero")
Servo(i).angle(10)
sleep(0.1)
Servo(i).angle(0)
sleep(0.1)

If it’s only the legs that are not zeroed? Then it’s only 8 screws to undo, and they’re reasonably easy to access.

Just be super careful if you don’t do a full disassemble though. It’s easy to drop one of those screws into the robot body and cause a short. It is fully powered up at this point with powerful batteries.(Guess what happened to me on a previous project :wink: )

Great tip on being super careful with the screws…thank you so much for that.

You are most welcome. I hope it works out for you. The pidog is really quite fun, and Sunfounder have put together a nice set of examples to get started.