Lynxmotion A-pod Buildlog / Guide

[size=5][highlight=#ffffff][font=Verdana, sans-serif]The Lynxmotion A-Pod Assembly and Troubleshooting Guide[/size][/font][/highlight][font=Verdana, sans-serif]Author: Eric Shi[left]The original guide for the Lynxmotion A-pod was out-dated and contained several mistakes and was missing critical information. Working closely with Lynxmotion and community members, I have developed a comprehensive guide that includes a review, an assembly guide, an electronics guide, and a troubleshooting guide.[/left][font=Verdana, sans-serif][/font][/font]
First Time Walking

[size=4]**Table of Contents **[/size]

][size=2]Review of the Lynxmotion A-pod and Bill of Materials[/size]/:m]
][size=2]Mechanical Assembly Guide[/size]/:m]
][size=2]Electronics Guide[/size]/:m]
][size=2]Troubleshooting Guide[/size]/:m]
][size=2]Project extensions[/size]/:m][size=4]Lynxmotion A-pod Review and Overview[/size]

**[size=3]Robotic Specifications[/size] **
Servo motion control = local closed loop
Steering = Differential
Number of legs = 6
Degrees of freedom per leg = 3
Motion speed = 10"/S
Height (body) = 2.50"

The A-pod is a fantastic kit. The poly-carbonate material is extremely strong, easy to work with, and looks better than aluminum brackets. The recommended HS-645 servos by Hitec are a great hobby level PWM servo enabling the gait of the hexapod. There are lessons to be learned with regards to how the brackets, ball bearings, and joints are machined. The femur and tibia joints are well designed.

The recommended control system of an Arduino based micro-controller with servo control offloaded to a dedicated controller (SSC32) is great. The PS2 V3 controller is okay for an entry level control system. I plan on building a X-Bee controller in the future. The polling limitations of the PS2 V3 limits advanced movement patterns. On the body, tail, and claw, there are several extra servo mounting locations and area for adding your own sensors.

One of the biggest drawbacks ended up being the biggest selling point for me personally. The documentation is outdated and has some issues that have been around for a long time. However this made working the A-pod so much more interesting. After working through all the edge cases that the guide does not address, I believe I have learned some valuable lessons.

The only room for improvement for the A-pod kit is including longer wires. Mounting the micro-controller at the tail is a great idea, however in order to connect the ground to the SSC32, a long wire is required. Else, when you are moving the tail, it possible to rip out the power cable which is never very safe.

Please be aware, this kit is not aimed at students or hobbyist without basic electronic experience in the past. I believe that **soldering is required. **Even if you don’t plan on using force sensors, you will have to do some soldering and heat shrinking to ensure you have reliable power connectors.

The A-pod is a fantastic robot kit. Even without smart digital servos, the cheap PWM servos makes the components required to build this affordable. The joints feel a lot more solid compared to the smaller phoenix. The claw and tail are fantastic. There are lots of expansion room on the chassis, tail and even claw for addition of your own sensors.
[font=Verdana, sans-serif]I will briefly describe one of the major issues with all of the hexapod kits and discuss two possible solutions.[/font]
[font=Verdana, sans-serif][/font]
[size=4]A-pod Mechanical Assembly Guide

**Tools and Equipment
Essential tools **

]Philips screw driver/:m]
]Hexagon socket screw driver/:m]
]9V Battery/:m]
]Breadboard (for Arduino servo centering)/:m]Recommended tools

]Soldering iron and solder (for extending power cables)/:m]
]Heat-shrink tube (to prevent shorts at the twister terminals)/:m]
]Extra wire/:m]
]Extra twist-ties/:m]**
Handling the Lexan Poly-carbonate Material**
I personally found the components easy to remove just by wiggling the parts around. Using an exacto knife yielded poor results and easily damaged the corners if not careful. The material has some sort of finish on it. I found using neutral soap and luke-warm water to wash it yields good results. A lot of the parts will have holes that need to be finish, you can use small screw drivers or anything small enough to finish through the holes.

For more information about the material and the handling of the material, refer to this guide.

**[size=4]Part I Mechanical Assembly Guide - Leg Pairs[/size]
**The first part of the assembly guide, we will go over how to construct the legs of the hexapod. Please note that the left and right leg are built differently. I recommend building three of each side at a time. Please note that the reference point is the head. The left legs are joined to the left of the head.

Pre-assembly - Centering the Servo Motors
Before assembling the leg pairs, ensure that you have 18 centered servo motors. This step is extremely important. If your servos are off centered, your joints will not have the full range of the motion. Do not be deceived by the fact that people talk about a hexapod calibration tool or offsetting the registers on the SSC32. Those will only correct minor adjustments, usually within +/- 15 degrees. If your joint is off by more than 15 degrees, even offsetting won’t help you fix the joint.

There a few ways to center basic hobby servo motors.

]If you have access to a breadboard or single strip wire extenders, you can connect the hitec servos to an Arduino and run a simple program. You would of course have to physically remove the servo horn, run the centering program and reattach the horn at the centered position./:m]
]Using a graphical program or a servo controller board that has software to interface with servo motors./:m]
]Do it by hand, this method is recommended against but if done carefully enough, it can work. The idea is you turn the motor fully left, then turn it full right. While you do this on a piece of paper trace where the end points were. From there interpolate where the middle must have been and attach as it as close as possible. Assuming you can get each servo motor to only be a few degrees off centered, this method could work./:m]
If you are using an Arduino, you will need a mini breadboard to make the connections with the servo motor. The following diagram from the Arduino main website demonstrates how to connect a servo motor to the micro-controller. make the above connections, a breadboard may be useful to have. I’m assuming you know how to upload and run a simple Arduino program. If you are not familiar with this, I will post a link to a basic Arduino guide I plan on writing soon.

#include <Servo.h>

Servo myservo; // create servo object to control a servo
// a maximum of eight servo objects can be created

void setup()
myservo.attach(9); // Whichever pin you attach your servo to, change this value to match it

void loop()

After running this code, your servo motor will be centered. Simply re-attach the metal servo horn such that the holes line up perpendicular to the ground. While this process might have been tedious, it is a key step that will ensure that your robot will be well tuned.

In the future sections, I will not go through this again but the same process applies for the body, mandibles, and tail.

Moving Forward with Mechanical Assembly gather the following components.

]2x Balling bearing / flange kits with mounting hardware/:m]
]2x Multi-purpose brackets/:m]
]4x 2-56 x .250" (1/4") Philip head machine screws/:m]
]4x 2-56 x .188" Steel standard nut/:m]
These components will allow us to form a basic joint between two multi-purpose brackets. For the purpose of orientation, pictures on the left will show the left leg and pictures on the right will show the right leg.
Step 1. Mount the flange to the multi-purpose bracket using the provided mounting hardware.**[left][font=Verdana, sans-serif]The Multi-purpose Bracket Problem[/font]
[font=Verdana, sans-serif]One of the core components for creating many of the Lynxmotion hexapod joints is the multi-purpose bracket. A typical servo motor will have a servo horn on one side meaning that a flange mechanism is required on the other side to enable rotation. The multipurpose bracket requires a flange on the opposite side of the servo horn.[/font]
[font=Verdana, sans-serif][/font]
In the specified instructions ( this issue is existent for all LM hexapod platforms), the 3mm x 8mm is actually not included in any of the kits. The reason for this is because they were not able to find a manufacturer who stocked these screws. However they have included a slightly longer similar Philips head screw. Using this configuration above with the provided mounting kit will cause the end of the screw to push the servo away from the mounting area.

Solution A
Reverse the direction of the screw and lock-nut. This will make it so that the longer joint is outside the bracket and inside the bracket will be a small extrusion from the head of the screw.

**Pros: **No extra hardware required
**Cons: **The extra length on the outside will cause your femur joint to buckle. The extra length forces the member into compression.

Solution B
Procure smaller screws[/left]Step 2. Connecting the Second Bracket
Gather the following materials

]2x Multi-purpose brackets/:m]
]4x 2-56 x .250" (1/4") Philip head machine screws/:m]
]4x 2-56 x .188" Steel standard nut/:m]
Following the orientation shown in the figures, proceed to attach a second multi-purpose bracket to the first.
Step 2. Attaching a ball bearing to the second bracket

]2x Balling bearing / flange kits with mounting hardware/:m]
Attach the ball bearing using the correction or the correct screws as follows. Please note the orientation. 3. Mounting the Servo Motors
Now we are ready to mount some servo motors into our new joints. For this we will need the following materials

]4x HS-645mg PWM servo motors by Hitec/:m]
]4x Bags of servo mounting hardware/:m]
The servo mounting hardware bag will contain the following items. these diagrams noting correct orientation and wire routing, attach the servo motors. Use a washer on the screw side.[left]Step 4. Assembling the Tibia[/left][left]Before we start on this section, I want to mention that I am skipping any leg sensors. In my experience, they are not required unless you are trying to optimize your gait. If you are, I recommend getting digital servos instead of analog PWM servos.[/left][left]For this part, there are a few things to note. One you will notice that your poly carbonate material has one side where it looks tarnished and another side which looks new. When building components that involve poly-carbonate, ensure that the good side is facing outwards on any joints.[/left][left]The goal is to build the above. We will need the following materials[/left][left]
]Poly-carbonate tibia pieces /:m]
]2x HS-645mg PWM servo motors by Hitec/:m]
]8x 4-40 x 1.00" Hex Socket Cap Screws/:m]
]8x 4-40 x .250" nuts /:m]
Make the joint as you see in the figure. Instead of using the servo mounting kit mentioned above, use the following mechanism with the 4-40 x 1.00" Hex screw.[LEFT]After completing the above, we are not finished. If you are visualizing how this joint will connect, you might realize that we need another flange on the near side to allow the joint to rotate. Without a bracket there, the solution is to use the provided plastic servo hinge.[/left][left]Materials[/left][left]
]2x Ball bearing / Flange with mounting kit/:m]
]2x Plastic Servo Hinge/:m]
]2x Adhesive strips/:m]
Prepare the plastic servo hinges by attaching the ball bearing as follows[LEFT]Now, we are going to use an adhesive strip to attach the plastic hinge to the back of the servo motor. Make a best effort to make sure that ball bearing lines up with the servo horn joint. The final assembly should look as follows.[/left][/LEFT][/LEFT][font=Verdana, sans-serif][/font]Congratulations, you have finished assembling the tibia. Ensure that all screws are tight but avoid over-torquing as that can damage the poly-carbonate. We will revisit this joint near the end of the assembly guide. Next is the femur joint.

Step 5. Assembling the Femur Joint.
Now, the pictures in this section should serve as a guide line on how the joints should be made. In terms of their centered orientation, hold the joint up and ensure that the femur will be parallel the ground when connected to the dual multi-purpose bracket joint we made above. If this is unclear, please refer to the following pictures.[left]Materials[/left][left]
]Poly-carbonate for femur joint/:m]
]4x hex standoffs/:m]
]4x 4-40 x .375" (3/8") Socket head screws/:m]
]8x 2-56 x .375" (3/8") Philip head screws /:m]
Create the following joint to start[LEFT]Connect this joint to the first bracket we made. Use these pictures as a reference, the centered position should be where the femur is parallel to the ground.[/left][left]Gather another[/left]
]8x 2-56 x .375" (3/8") Philip head screws /:m]
]4x 4-40 x .375" (3/8") Socket Head Screws/:m]
Now we will attach the other end of our femur to the tibia joint we made in the previous step. For this alignment, we want the tibia to be perpendicular with the ground.[/LEFT][left]Using the socket head screws we gathered in this section, attach the other side of the femur as follows[/left][left]To finish off our leg joint, gather the following[/left][left]
]Poly-carbonate foot piece/:m]
]4x 4-40 x 1.00" Socket head screw/:m]
]Any 4-40 nut, Nylon or regular/:m]
Attach the bottom leg piece as follows[LEFT]The final touch is to put on the rubber caps. I had to trim some of it off to ensure a snug fit. This will ensure the hexapod does not slip while walking.[/left][left]Congratulations, you have finished assembly an A-pod leg. Make sure you make 3 lefts and 3 rights![/left][/LEFT]
[font=Verdana, sans-serif]The Leg Centering Alignment Problem[/font]
When following the assembly manual, you may notice that for the femur and tibia joints, there is a suggested orientation in which you connect the joints at. According to the image and individual steps your final leg should look as follows. if you connect your leg following this, you will run into major issues down the road when you try to align your servos optimally. You see the problem with the connection above is that because it is not along the horizontal or vertical, it forces you to connect your servo horn at an angle to match that connection in the photo. What this means is that when you realize your mistake at the calibration step, you cannot simply remove the femur servo attachment, you must also remove the horn and recenter the servo.

What does this actually mean in simple terms. The above configuration requires you to attach it at 45 degrees. However to get the femur horizontal with the ground, the servo needs to be at 180 degrees. You can only change the joint in increments of 90 degrees with removing the entire leg and changing the servo horn. As a result you will have to reassemble a large part of your leg to correct this problem.

My recommendation is do not follow the outdated assembly guide. Instead make your joints using the following diagrams.
**[size=4]Part II Mechanical Assembly - The Body[/size] **
The first thing we will assemble for the body is the bracket responsible for rotating our mandible (claw). You need to get the top panel for the body (bad side of the material facing downwards) and a multi-purpose bracket.

**Mandible Mounting Bracket **


]Top Body Panel (bad material on the bottom side)/:m]
]1x Multi-purpose bracket/:m]
]8x 2-56 x .375 (3/8") Philip head screws/:m]
]1x Servo Motor/:m]
]1x Servo Mounting Hardware bag/:m]
]1x .5" Metal Spacer/:m]
]1x Metal Servo Horn/:m]
]1x Polycarbonate spacer piece/:m]
Step 1.
Grab the top piece of the body. Attach a multi-purpose bracket to it using 4x 2-56 x.375 screws.[left]Step 2.[/left][left]Attach a servo motor to the multi-purpose bracket. Remove the nylon servo horn, we will be connecting this to a metal spacer to rotate the mandible.[/left][left]Step 3.[/left][left]Attach a metal servo horn to the .5" spacer. This will function as an extension to connect the servo to the mandible.[/left][left]Step 4.[/left][left]Using the poly-carbonate spacer, slide it into place. Ensure that the opening is aligned with the servo horn. The spacer will be inserted here in the next step.[/left][left]Step 5.[/left][left]Don’t worry if the support column is loose, once you attach the top, this joint will be very secure. Attach the metal spacer with servo horn we made earlier.[/left][left]Now we are finished creating the joint that will connect our mandible. We will now move on to preparing for attaching the top piece of the body.[/left][left]Mounting the Top Body Piece[/left][left]Materials[/left][left]
]8x hex standoffs/:m]
]20x 4-40 x .375" Hex Screws/:m]
]4x 0.375" Nylon Hex Spacers/:m]
**Step 1. **
Attach 8 hex stand offs using the required 4-40 hex screws to the top body piece.[LEFT]Step 2.[/left][left]Attach 4x Nylon hex spacers to the bottom panel. These will be on the outside of the robot (placed on the good side of the material).[/left][left]Step 3.[/left][left]Attach the bottom panel to the top panel using 4-40 x .375" hex screws.[/left][left]Step 4.[/left][left]Attach the battery holder using zip-ties. Later on, I will post some recommendations for a better battery holder. This method requires zip-ties. If you decide to use the provided battery holder, refer to the instructions below.[/left][left]Attach this battery holder to the bottom side we just made using 4x 4-40 x .25" hex screws.[/left][left]After this, you will be ready to mount your BotBoarduino the body.[/left][left]Mounting the Micro-controller[/left][left]Now at this part of the guide, I will deviate heavily from the recommended instructions. In the original Lynxmotion guide the recommended mounting method is as follows[/left][left]This is actually a very desirable mounting mechanism in operation. However, if you mount it like this off the start, you will run into issues when trouble shooting. I will walk you through all the considerations you have to make such that you can decide how you want to mount it for testing and how you will mount it for operation.[/left][left]SSC32 vs SSC32U[/left][left]If you have the old version of the SSC32 with the serial port, I want to point out that if you mount the board in the recommended orientation, the serial port will be fully blocked by the mandible connector. In other words, if you follow the orientation of the standard code base, your serial port will be inaccessible. This is an issue because we need to connect directly to the SSC32 in order to calibrate our joints. In the new version with the USB port the same issue is present.[/left][left]I will highlight considerations for each orientation[/left][left]Serial / USB Port Facing the Tail[/left][left]
]You will need to change the pins in the code because the wiring will be flipped/:m]
]The power cables will be far away from the BotBoarduino (mounted on the tail). You will need to get longer wires for this orientation/:m]
]You will be able to access your serial / USB port when the board is mounted inside of the body/:m]Serial / USB Port Facing the Head

]Wiring orientation matches the code and calibration guide/:m]
]Power cables are close to the BotBoarduino (mounted on the tail)/:m]
]USB / Serial mount is inaccessible when the SSC32 is mounted within the body/:m]My Recommendation:
Learn from my mistakes. I started off mounting the SSC32 as shown in the guide. I quickly realized that the screw terminals were inaccessible when mounted inside of the body. Later on you will find out that using the screw terminals is difficult and I actually ended up removing them. My suggestion is as follows.

]Initially mount the SSC32 above the body so that all connectors and powering connections are easily accessible for trouble shooting/:m]
]When you have finished calibration and finalizing your power wiring, I would orient the board towards the tail. This way if you ever need to access the SSC32, you won’t have to unscrew, unplug all the wires, and remove the board from the body./:m]
Now if you follow my recommendations, you will have to get longer power wires. I will post detailed instructions on how I did it later on in this guide.

**Mounting the Board
**After you read the considerations to take, mount the board in the way you deem best for your use. After you have decided you are ready to move on to the final step of the body assembly.

Attaching our Leg Pairs
Using 4x 2-56 x.375" screws, attach each leg to the body. Your robot should look like this after you complete this step.[/left]Congratulations, now you will have to attach the mandible and tail before the hexapod is ready for electronic configuration.[/LEFT][left][size=4]Part III Mechanical Assembly - The Tail[/size][/left][left]I think the awesome tail design is one of the best part of the A-pod kit.[/left][left]If you were able to assembly all six legs and the body without, the tail should be a piece of cake ![/left][left]Step 1.[/left][left]Create a multi-purpose bracket joint as follows, this should be a familiar process by now. Use the same correction method used in the leg assembly guide to ensure that you can fit a servo motor onto the joint.[/left][left]Important: I will try to fix this in picture form later but please note that as with any joint, there should be a flange on both multi-purpose joint. The current picture I have here does not show it well but the bottom multi-purpose bracket should have a flange attached to it as well. Just like the previous joints, the flange should be opposite of the other bracket involved in the joint.[/left][font=Verdana, sans-serif][/font]Step 2.
The next step is to get the top piece of the tail. Orient it so that the bad side of the material is facing up (we are attaching the spacers to the bottom side of the top piece). Attach the four provided nylon spacers."%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20style=“font-family:%20Verdana,%20Arial,%20sans-serif,%20Tahoma;”%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20style="font-family:%20Verdana,%20Arial,%20sans-serif,%20Tahoma;[left]Step 3.[/left][left]Attach four nylon spaces to your BotBoarduino. The picture shows an older circuit board.[/left]
[font=Verdana, sans-serif]"%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20style=“font-family:%20Verdana,%20Arial,%20sans-serif,%20Tahoma;”%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20style="font-family:%20Verdana,%20Arial,%20sans-serif,%20Tahoma;[/font][left]Step 4.[/left][left]Attach the micro-controller with the nylon spacers to the tail joint[font=Verdana, sans-serif]
[font=Verdana, Arial, sans-serif, Tahoma][font=Verdana, sans-serif][/font][/font]
[/font][/left][font=Verdana, sans-serif][/font][left]Step 5.[/left][left]Now we want to use the T-piece cut outs provided to connect the whole assembly together as shown.[/left][font=Verdana, sans-serif]"%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20style="font-family:%20Verdana,%20Arial,%20sans-serif,%20Tahoma;[/font][left]Step 6[/left][left]Following this orientation, slide the custom bracket we made into the housing. You may find it easier to attach the servo motor to the inner bracket before completing this step.[/left][font=Verdana, sans-serif][/font][left]Step 7.[/left][left]Attach a servo motor to the inner bracket[/left][font=Verdana, sans-serif][/font][font=Verdana, sans-serif][left][font=Verdana, Arial, sans-serif, Tahoma]Step 8.[/font][/left][/font][font=Verdana, sans-serif][left][font=Verdana, Arial, sans-serif, Tahoma]The final step is to attach one more servo motor to the outer multi-purpose joint. This will be the servo motor that connects the tail to the body.[/font][/left][/font][font=Verdana, sans-serif][/font][left][size=4]Part IV Mechanical Assembly - The Mandible AKA. The Claw [/size][/left][left]The claw is easy to assembly just as the tail. However the tricky part is soldering wires to the force sensor and attaching it carefully so that the pins do not get ripped off the force senors. I might revisit this in the future and use a better force sensor. The reason is, if you want the robot to be able to autonomously pick something up without controls, it is important to be able to detect what force is appropriate to stop at when picking up an object.[/left][left]Step 1.[/left][left]Business as usual. Create two multi-purpose brackets as shown[/left][left][LEFT]Step 2.[/left][left]Attach them together as shown below[/left]
[left]Step 3.[/left]
[left]Now attach a C-bracket to the top panel of the mandible[/left]
[left]Step 4.[/left]
[left]Slide the “C” bracket over the ball-bearing of our previous multi-purpose joint as shown below. Note before proceeding with this step, I recommend you attach the servo motor to the top bracket before attaching it to the “C” bracket.[/left]"%20style="font-size:%2012px;
[left]Step 5.[/left]
[left]Now we will create one of the pincers. Attach two pincer panels over a servo motor as shown below and use the following nuts to secure the joint.[/left][left][/left][/LEFT]
[left]Step 6.[/left][left]Now we are going to start working on the other pincer. Following the standard guide, this pincer will have the force sensor. Start by sliding a plastic spacer into place and tighten it between a washer and a nut. If you have problems finding the plastic spacer, look into one of the boxes that the servo motor came in. This component can be located in that box.[/left][left]Step 7.[/left][left]Now we will wire and attach the force resistor sensor to the claw. The wiring in short will look as follows.[/left][left]The first step is to take the extra long 24" servo cable provided and to cut off the connector at one end. Strip away enough of the three wires to make a connection. Please note that this is why I said wire strippers might be required. The kit should have come with one 10K Ohm resistor. If you lost it or cannot locate it, I can assure you they are easy to come by.[/left][left]After stripping the wires, solder the connectors to the force resistor sensors. Now, I’m going to warn you that these pins are easily torn off the sensor. My recommendation is to use enough electrical tape and heat-shrink to make sure that you have a solid joint. Ensure that the wire is never under tension.[/left][left]Attach the sensor to the servo motor we prepared earlier as follows[/left][left]Step 8.[/left]
[left]Complete the pincer joint[/left][left]Step 9.[/left][left]Ensure that the two mandibles are aligned. Secure them as follows[/left][left]Step 10.[/left][left]Attach the pincers to the top panels as follows.[/left][left][LEFT]Step 11.[/left][left]Attach the universal brackets and mount servo motors[/left]
[left]Step 12.[/left]
[left]Finish your mandible by attaching a “C” bracket to the spacer we put on the body.[/left][left]Finally c[font=Verdana][size=2]lean the pincers using a cloth with isopropyl alcohol. Attach two pieces of weather stripping to the insides of the mandibles as shown. If the surface has not been cleaned, then the strips will not stick to the material.[/size][/font][/left][/LEFT][left]Congratulations, you have finished the mechanical assembly of the A-pod.[/left]

[font=Verdana, sans-serif]**
Wires Required for Connectivity **[/font]
[font=Verdana, sans-serif]In this section, I will outline all of the wiring you need not included in the kit for connectivity. **Soldering and Heat shrinking **is required for successfully assembly of the robot.[/font]
[font=Verdana, sans-serif][/font]
[font=Verdana, sans-serif]PS2 V3 Controller with SSC32 TX/RX[/font]

[font=Verdana, sans-serif]Understanding the Interface[/font]
[font=Verdana, sans-serif]Now if you are looking at the 6 pins from your PS2 controller, it may be intimidating at first glance to think about how to wire them correctly. I will go through the details of the interface. You can skip to the diagrams if you are only interested in getting the hexapod up and running.[/font]
[font=Verdana, sans-serif][/font]
[font=Verdana, sans-serif]So first, if you observe the pin-out on the receiver, you will notice that there 9 pins total. They are as follows.[/font]
[font=Verdana, sans-serif][/font]

  1. DATA
  3. N/C (9 Volts unused)
  4. GND
  5. VCC
  6. ATT
  7. CLOCK
  8. N/C
  9. ACK

However, for our purpose we only need 6 of these pins.

Data Pin
This pin as the name implies allows synchronous data transfer between the micro-controller and the PS2. It utilizes the falling edge of the clock pulse to determine when a signal should be transmitted.

Command Pin
Think of this as the compliment to data. Similar to the TX/RX transmission receiver interface, the command pin pairs with the data pin to complete the communication channel.

This pin is the attention pin. In acts as a signalling system to alert the board that it should be ready to receive a data transfer.

The clock pin is important for synchronization between the receiver and the micro-controller. This type of clock based synchronization is used in many real world applications. For example, in telecommunications the clock pulse required to synchronize different network sites is pulled from the atomic clock of satelites. A lot more accurate than most of the oscillators you see on boards.

Now you may notice that the four pins I mentioned are all connected vertically along the left most pin. The remaining +5V (VCC Pin) and GND pin are connected horizontally to the pins dedicated to VCC and GND on the micro-controller. Hopefully now that we have broken down the function of each pin, the interface is not at all intimidating.


[font=Verdana, sans-serif][/font][font=Verdana, sans-serif]One of the issues you may encounter down the road if you follow the current assembly guide is that your PS2 controller will have a noisy communication channel and some of the controls will not work. After looking around it forums, it appears that no one has posted a detailed solution on how to fix this.[/font]
[font=Verdana, sans-serif][/font]
[font=Verdana, sans-serif]First let’s observe the recommended wiring guide.[/font]

Now this will allow you get the PS2 controller up and running but it will make your hexapod go crazy. Now the fix to this does not have a clear explanation yet. Kurte speculated it could be related to the pull up resistance difference on pins 10-13. Nevertheless, it seems to work so I will share with you guys how to do it.

The first step is to move pins 6-9 to pins 10-13. That means pin 10 will now be data, pin 11 will be command, pin 12 will be attention, and pin 13 will be clk. After doing this, if you are using Lynxmotion code, modify this in your Hex_cfg.h

#define SOUND_PIN 5 // Botboarduino JR pin number #define PS2_DAT 10 #define PS2_CMD 11 #define PS2_SEL 12 #define PS2_CLK 13 #define cSSC_OUT 8 //Output pin for Botboard - Input of SSC32 (Yellow) #define cSSC_IN 9 //Input pin for Botboard - Output of SSC32 (Blue)

Please note pins 8 to 9 are the TX / RX pins to communicate with the SSC32. These pins can be anything that has a 5V jumper on the pins.

[font=Verdana, sans-serif]Power Connectors (BotBoarduino to SSC32 and 9V Logic to BotBoarduino)[/font]
[font=Verdana, sans-serif]Depending on your orientation, the length between the power terminal of the Boarduino and the SSC32 at full leg extension can range from 25 - 35 cm or 12-13 inches. I recommend leaving a reason tolerance but not so much where the wire has too much slack. Depending on where you want to mount your logical 9V battery, you may also need to create a longer wire for that connection.[/font]

[font=Verdana, sans-serif]It also important you use heat-shrink on these power connectors as the screw terminals are not very reliable. If the power shorts with the ground, it could end up costing the board.[/font]
[font=Verdana, sans-serif][/font]
**[font=Verdana, sans-serif]Connector between BotBoarduino and SSC32 Servo Controller[/font]
**[font=Verdana, sans-serif]In the final set up, you may notice when performing this step that it does not permit you to make the connection you need.[/font]
My advice here is that do not tape off the red connector. Instead attach a single slot connector to it so that you can attach it pin 12 and 13 at the same time. This will make the TX/RX connection between the BotBoarduino and SSC2 easy.
[font=Verdana, sans-serif]Hexapod Mechanical Assembly[/font]
[font=Verdana, sans-serif]A-Pod Body[/font]

][font=Verdana, sans-serif]Position the board above the chassis to start. If you follow the documentation wiring will be extremely difficult at first. Also by doing this, you will realize what the best orientation so when you mount in inside of the body, it will be the optimal orientation for your use[/font]/:m]
][font=Verdana, sans-serif]I personally used warm soapy water to wash off the parts. Also removing the poly-carbonate can be done by moving the pieces back and forth. I found that using a knife can damage the finish on the edges.[/font]/:m][font=Verdana, sans-serif]A-Pod Tail (no major issues here)[/font]
[font=Verdana, sans-serif]A-Pod Legs[/font]

][font=Verdana, sans-serif]The universal brackets won’t work as shown in the diagrams. After attaching flanges, the screw / nut will prevent you from mounting standard size servos. The easiest work around is to reverse the direction of the screw / nuts. This causes slight buckling in the other leg joints because of the longer joint on the other side. The optimal solution is to find the screws they did not include with the kit.[/font]/:m]
][font=Verdana, sans-serif]Make sure that you align all the servos ahead of time. How you attach each joint is important to enable full range of motion. I will post some diagrams to help illustrate the range of motion when I have a chance.[/font]/:m][font=Verdana, sans-serif]A-Pod Head[/font]

][font=Verdana, sans-serif]The force sensor pins are extremely sensitive. When soldering the wires onto the force sensor, make sure you use heat shirk and electrical tape to support that joint as much as possible.[/font]/:m]
][font=Verdana, sans-serif]I will be doing a better solution for this down the road[/font]/:m][font=Verdana, sans-serif]Electrical Wiring and Interfacing[/font]
[font=Verdana, sans-serif]BotBoarduino[/font]

][font=Verdana, sans-serif]In order to upload code to the board, you must have a driver set up for virtual COM ports. On your Arduino IDE, set the board to Duemilanove and the chip to ATmega328[/font]/:m]
][font=Verdana, sans-serif]If you are running the sample phoenix gait code, you must install the relevant PS2 library. The link can be found in the readme, I will put it here next revision[/font]/:m][font=Verdana, sans-serif]Trouble Shooting[/font]

][font=Verdana, sans-serif]Ensure that you are using a 9V battery. Falling below 5V will mean that your logic will not run. Check to make sure that your power cables are separated and have good connections to the screw terminal[/font]/:m]
][font=Verdana, sans-serif]Make sure the pwr light is on, this will indicate the board has power[/font]/:m]
][font=Verdana, sans-serif]Check your jumper configurations[/font]/:m]
][font=Verdana, sans-serif]If you are testing your PS2 controller with the default phoenix code, check to make sure the receiver has two solid lights[/font]/:m]
][font=Verdana, sans-serif]The default phoenix code will beep every-time it receives a command, if you have the jumper on your speaker, you should hear these beeps[/font]/:m]
][font=Verdana, sans-serif]It seems that removing the jumpers for the LEDs can help if all of the above does not resolve your issue[/font]/:m]
[font=Verdana, sans-serif][/font]
[font=Verdana, sans-serif]SSC-32 Servo Controller[/font]
At 32 channels of 1 uS resolution, the SSC32 is a fantastic servo controller for a hexapod. Using the HS-645 servos, you will well within the recommended peak current draw of 15A per side. Something to be aware of is that the recommended steady current draw should be at most 3-5A per side. For the A-pod at 25 servos without any expansion, it possible for this steady current to be exceeded.
[font=Verdana, sans-serif][/font]
The newest SSC32 servo controllers have an USB interface. The older version has a serial interface. If you have one with a serial interface, an adapter is recommended. I found this adapter to be good to use. Being able to interface with the SSC2 is important for calibrating your joints and for debugging.

Power Connections
One of the issues you will run into with the A-pod is

]The standard wire length of the power harness provided by Lynxmotion is not long enough/:m]
]The extra wire intended to connect the SSC32 GND pin to the BotBoarduino GND pin is also not long enough/:m]
]The screw terminals are actually fairly dangerous to use with the given wires/:m]
The higher required wire length stems from the fact that one board is located at the tail and the other is located within the body. At full tail extension, the board is fairly far away. For me, I used about 20 cm of 16 awg wire and solder to extend the wire lengths. Keep in mind if you choose to join two pieces of wire together, use heat-shrink tubing to prevent accidental shorts.

Now, when using the screw terminals on the SSC32, you may notice that they are very small screw terminals. On inherent flaw with such small screw terminals is that it cannot hold the wire down firm enough to ensure that no accidental shorts can occur. I personally experienced a momentary short between the two wires and there was smoke from the screw terminal. Luckily enough, I quickly disconnected the power. After this happened, I decided to remove both screw terminals and decided to solder the power connectors directly onto the SSC32.

How I removed the screw terminal was using the following steps. I used copper desolder wick. You can also use a desoldering pump.

]Apply some fresh solder to the bottom of the solder joint of the screw terminal/:m]
]Press desoldering wick against joint and press iron against the wick/:m]
]Use something to grip and pull the screw terminal. Gradually apply force to the joint until it easily comes off/:m]
After that, I soldered the connectors directly onto the small pads and used electrical tape on the connectors.

I did this for both the VS And VL screw terminals. Here is a picture of both terminals done.

**Troubleshooting Guide from the A-pod Perspective **

**My computer is not recognizing the SSC32 when I connect it via a serial or USB connection
]Check to make sure that the power LED is on/:m]
]Check under device manager that the COM port is being recognized. It it is recognized, try going into advanced setting and changing the response time to 1 ms. /:m]
][font=Verdana, sans-serif]Ensure that the TX / RX pins have jumpers on them[/font]/:m]
][font=Verdana, sans-serif]Ensure that the baud rate is set to 11.5k or a logical 1 1 (both jumpers on)[/font]/:m][left]I can’t tell if my SSC32 is receiving commands from the PS2 controller[/left][left]The first thing you want to do is to power on the robot and to see if the D1 light goes on.[/left][left]One tricky part here is even though the D1 light may turn on, it does mean that the SSC32 has enough voltage to run logic. Sometimes my PS2 controls suddenly stop working because the 9V battery is not supplying enough voltage. If the D1 light turns on, try latching your PS2 controller. The first thing to check here is when you press start, do you hear / see the BotBoarduino response. Once you are sure that the BotBoarduino is picking up the signal, it is time we review what the D1 light tells us.[/left][left]When the SSC32 receives the first bye of instructions from the BotBoarduino, the light will turn off and stay off until the next bit stream. When that occurs, you will see D1 flicker with each command. At the start, if the SSC32 turns on and then the light goes off, it is nothing to worry about.[/left][left]Once you are sure that BotBoarduino is picking up the command from the PS2, it is time to check how our SSC32 is configured.[/left][left]**Note: **If you decide here that the issue is the BotBoarduino not picking up the PS2 signal, you will have to go to the troubleshooting section in that section.[/left][left]Ensure that the baud rate is set to communicate with the micro-controller. Also check your TX/RX connectors as shown below.[/left][left]My PS2 controller is working but only one side of my robot moves[/left][left]You have to make sure that if you are using a single battery, you have the jumper configured so that VS1 (Voltage servo side one) is equal to VS2 (the second side). This is shown in the figure below.[/left]
][font=Verdana, sans-serif]Install Lynxterm and the hexapod calibration tool[/font]/:m]
][font=Verdana, sans-serif]If your computer is like most peoples, you will need a serial to USB adapter in order to connect to your computer[/font]/:m][font=Verdana, sans-serif]Software and Tools[/font]
[font=Verdana, sans-serif]Arduino IDE[/font]

][font=Verdana, sans-serif]The language used to program the BotBoarduino is C. If you have no previous experience working with Arduino, I recommend you start off by playing around with simple Arduino programs. The best way to learn is to get an Arduino, a breadboard, basic electronic components and play around with the general purpose I/O[/font]/:m]
][font=Verdana, sans-serif]The latest version of the Arduino IDE can always be found here[/font]/:m]
][font=Verdana, sans-serif]Virtual Com Port Drivers for BotBoarduino[/font]/:m]
][font=Verdana, sans-serif]The serial chip on the Boarduino is FTDI chip. In order for the Arduino IDE to recognize the COM port to allow programming you must install the FTDI VCOM drivers from here[/font]/:m][font=Verdana, sans-serif]Lynxterm[/font]

][font=Verdana, sans-serif]can be used over a serial interface to test the SSC-32 servo controller through a graphical user interface. It is used to load new firmware onto the SSC-32. The tool can be downloaded here[/font]/:m][font=Verdana, sans-serif]Hexapod Calibration Tool[/font]

][font=Verdana, sans-serif]Utilized to center each joint on your hexapod. It allows you to apply offsets to each servo motor. In order for the calibrator to recognize your SSC-32, you need to ensure you have[/font]/:m]
][font=Verdana, sans-serif]A serial cable / a computer with a serial port or a USB-to-Serial Adapter[/font]/:m]
][font=Verdana, sans-serif]The serial COM port has it’s response time set to 1 ms[/font]/:m]
][font=Verdana, sans-serif]The baud rate on your computer matches the baud rate on the SSC-32 board[/font]/:m]
][font=Verdana, sans-serif]The download link can be found here[/font]/:m][font=Verdana, sans-serif]18/02/2015 Build log created.[/font]
[font=Verdana, sans-serif]23/02/2015 Updates on Femur centering and PS2[/font][font=Verdana, sans-serif]I will be updating this a lot in the upcoming month. I am completely open to feedback.[/font]
[font=Verdana, sans-serif]27/02/2015 Updated how to get PS2 V3 working with BB and SSC32[/font]
[font=Verdana, sans-serif]03/03/2015 After fixing the PS2 V3 controls, the robot is more predictable. I have been busy with work, will do some big updates when I get time.[/font]
[font=Verdana, sans-serif]05/03/2015 Posted my review of the kit, added a trouble shooting guide from the SSC23 perspective[/font]
[font=Verdana, sans-serif]09/03/2015 Added Leg Mechanical Assembly Guide[/font]
[font=Verdana, sans-serif]11/03/2015 Added new pictures about removing screw terminals[/font]

1 Like

We very much appreciate your input and do apologize for any inconvenience. We have not created a complete A-Pod kit based on the BotBoarduino as our current focus is elsewhere.

No problem at all ! I will ask questions on the forums if I get stuck. I have everything working now except the PS2 controls. After that works , I will try to implement new code to incorporate the leg size differences and claw / tail. CBenson, I may have to Pm you my wiring diagram I can’t figure out the PS2 controls. I won’t anytime to look at it tonight though.

We would suggest basing it all off the Phoenix code and wiring: … uhex01.png
When in doubt, follow the silkscreen on the level shifter to the BotBoarduino pins and check to see that the code corresponds.


So I got the PS2 controller talking to the SSC32 and it is able to transmit to power up the hexapod. However after it gets the power up signal, all of the servo motors begin to move at random.

After searching the forums.

I have tried the following

  1. Removing the LED jumpers on the Boarduino
  2. I tried using Kurte’s fork of the PS2 library

I noticed there was discussion about the PS2 V3 controller. I was wondering if anyone ever got the PS2 V3 working with the Boarduino / SSC32.

Also has anyone experienced this, the hexapod literally goes crazy after the start command. Every servo begins moving randomly.


After more testing tonight, I noticed I could use the PS2 V3 controller using the
[table][tr][td][size=1][font=Verdana, Helvetica, sans-serif]D-Pad Left[/font][/size][/td][td][size=1][font=Verdana, Helvetica, sans-serif]Decrease speed by 50mS[/font][/size][/td][/tr][/table]
command to reduce the speed of the actions. After slowing down the hexapod, I could see that it was trying to do some sort of sloppy gait.
FYI, I replaced the PS2 library with Kurte’s latest fork with the changes to help get the PS3 V3 controller working. I did not switch my PS2 V3 controller to the recommended pins as the 13 row pins are in use to connect the BotBoarduino with the SSC-32.

Using the suggested phoenix code from the build guide and Kurte’s fork of the PS2 V3 controller, it seems like a lot of the commands were not working.

These did not work (the flashing serial light never lit up for these commands).
[table][tr][td][size=1][font=Verdana, Helvetica, sans-serif]O Circle[/font][/size][/td][td][size=1][font=Verdana, Helvetica, sans-serif]Toggle Rotate mode[/font][/size][/td][/tr][/table][table][tr][td][size=1][font=Verdana, Helvetica, sans-serif]Left Joystick[/font][/size][/td][td][size=1][font=Verdana, Helvetica, sans-serif]Walk mode 1: Walk/strafe
Walk mode 2: Disabled[/font][/size][/td][/tr][tr][td][size=1][font=Verdana, Helvetica, sans-serif]Right Joystick[/font][/size][/td][td][size=1][font=Verdana, Helvetica, sans-serif]Walk mode 1: Rotate
Walk mode 2: Walk/rotate[/font][/size][/td][/tr][/table]Further, I was not able to get my hexapod to stop walking no matter which commands I tried using. I was wondering if anyone has gotten the PS3 V3 to work with the pheonix sample code and the BotBoarduino. I am using the latest 2.07 SSC32 Firmware.

My final issue here is based on the recommended build instructions, my joints seem to be extremely out of line. The servo motor that connects the legs are fine.

The middle one is perpendicular with a little offset and the side ones can be adjusted slightly to 45 degrees. However based on the recommended attachment point shown on the guide, the femur is exactly 45 degrees away from being parallel to the ground. The same is true for the smallest leg joint. Within the the +/- 100 offset, it is not possible to get the femur parallel and the leg tip perpendicular with respect to the ground.

Referencing the figures on the build guide

You can see here that assuming you have centered your motor, the femur is being attached roughly 45 degrees from being parallel with the ground. The calibration goal, from my current understanding is shown below.

Performing the same analysis for the tibia we can see that using the attachment shown in the guide, using a centered motor will result in the tibia not being perpendicular with the ground.

Again in calibration, we can see this will become an issue.

Before I go ahead and realign my servo motors. I noticed with my PS2 controller partially working, no combination of buttons could get the hexapod to stand up on its own.
**Question: **At the centering pulse of 1500 ms, what should the state of the hexapod be. Should it be standing up when the 1500 ms is sent to all the joints. Following the assembly guide, the hexapod will be close to lying down on the floor.

I think after I get the phoenix code working with the PS2 V3 controller and the SSC32, I’m going to adapt the A-pod code and try to better document the code so that people who do not have a strong real time systems or C programming background can slowly learn it.

Finally here are some pictures of the A-pod joints at 1500 ms pulse at each servo. Please note the wiring is messy because I am still in the progress of debugging everything.
Also here are the pictures of the BotBoarduino and the SSC-32. Right now it is wired for serial communication. When I hook it up to the PS2, I remove the two jumpers beside the serial port and connect it to the Boarduino. I also remove the second bit of the baud rate. If you see any glaring errors please let me know.

It occurred to me after viewing this picture that either the calibration guide is wrong or this picture is not when the servos are at 1500 ms.

The image you show is an “action shot” rather than what the robot should look like when all servos are at 1500.

Hmm thought so. However, following the building guide, it is making you build the robot centered at that action shot. Also my PS2 V3 controller only half works. It seems like no one has gotten it to work fully before, the V3 at least. I will start looking into it.

I posted an update about how to proper assembly the legs… the first time :slight_smile: I had to redo all of my legs today. Also PS2 V3 is still only half working for me. Based on the information I found on the forums, it seems like no one has confirmed that they got it fully working yet.

Hey everyone, I figured out how to get clean communication on the PS2 V3. I have updated the main post with it as well as some more information about general problems / solutions.

Updated today, added some pictures these were from early on in the build.

After clearing up the issue with PS2 V3 communication and modifying the configuration for the lengths of the joints, the robot is able to lower itself and raise itself to the maximum height. The gait is still sloppy. Will post some new videos soon.

I hope you intend to generate a PDF when you’ve finished writing the guides.

Good work!

Alan KM6VV

Fully intend to :slight_smile:

Hello Coleman,

I was wondering what do you think about if I removed the screw terminal for the VS battery terminal and soldered the wires directly onto the copper pads. The reason for this is because the power harness (with the switch) has several strands of copper on the end. This makes it easy for it to short with the other wire. Now I can solder the individual strands of copper together in hopes of reducing the chance of shorting.

In fact when I was testing the gait, it seems like something pulled the wires together and it caused smoke to rise from the screw terminal (luckily I shut it off in a split second).

Secondly, I notice that because the A-pod is much heavier than the aluminum phoenix, it seems like the gait is a little sloppy due to the 18 servos (claw and tail not yet equipped) holding up the weight of the A-pod. I know you guys mentioned you had an A-pod. Does yours work fine off just one 2800 mah Ni-mh battery.

I’ve got a better way. I solder a short .025" post to the end of each of the wires, then put on shrink tubing. Problem solved!

Alan KM6VV

It’s walking ! Posting a video in a few.

Edit: Added link

More walking after improving some of the joints

As always, that’s one cool (and advanced) robot.

could explain to me how he thought to do the walk?
thank you