Question about FindServoOffsets Phoenix_Driver_SSC32.h

Hi All,

I was investigating the quad-libraries which contain lots of good code, thanks for the ones who contributed this useful library.

While investigating, I have seen there is a function called FindServoOffsets() in Phoenix_Driver_SSC32.h file. Can you please explain me the purpose of this function?

Hi,

There are a few of us who worked on this code base (Zenta, Xan and myself), with the feedback and help of others. Note: I believe the code up on the Lynxmotion github is the original drop of code where Xan added his quad support to my Arduino port of the code base. I later merged his changes into my github project: github.com/KurtE/Arduino_Phoenix_Parts . The quad support is under the quad support branch.

Now to the question at hand: The code is there to help you find the right servo offsets for your hexapod. I added this type of support (in most of my robot code bases), as most of the time when I build a robot, I am too anxious to try the robot out, so I never do a good job of finding the right servo offsets to make the robot work the best. Also I found that when I have a robot with 16+ or 24+ servos, I sometimes make mistakes and swap a couple of servo wires or maybe one is not fully plugged in…

So with many of these programs, if I can easily add some form of debug terminal support, I do. In the Arduino Phoenix code base, I do. So when the program is running, but not in a running state (have not pressed the start button). If you have a serial cable connected to the botboarduino, you can open a terminal monitor at I believe the baud rate of 38400 (you can configure the code). If you hit enter, it will print out a cryptic set of commands. I believe in this case I have the O command to enter servo offset mode.

Once you enter this mode, you can use the keyboard on the PC, to choose different servos. Again I don’t remember what all I supported back in that version. But for sure the * will move you to the next servo. Note: if you are using the Arduino terminal monitor, no characters are sent, until you hit the cr, so you can hit * and it will advance to the next servo. At this point it will print out the pin number, plus pin name and wiggle the servo. I use this to help me confirm the servos are in the right spot and working. Note: with current code base (and maybe that one as well), you can hit: c to choose the Coxa (Hip horizontal)servo on the current leg, f for femur(hip vertical), and t for tibia (knee). You can also hit 0-5 to choose a leg, Once you have a servo chosen, you can use the + and - keys to adjust the servo (again on terminal monitor) it won’t do anything until but if you know you need to go aways in one direction, you can group them up, like: ++++

Once you are done playing with the servos, you can exit this mode, by the $ command. At this point it will ask you if you wish to save the changes. If you do, it will will write these changes out to the appropriate registers on the SSC-32.

Hope that helps
Kurt

Kurte is one of the masters and all of us very much appreciate having him here.

Thanks for the detailed explanation kurte.