I got my Bittle assembled and seemingly connected properly, but when I enter calibration mode using the remote, all the servos firm up except for the left elbow which is allowing manual rotation. I can’t get that joint to move with any keypad buttons. I’m not sure how to find out whether there’s a hardware problem requiring a new board or if it’s a software configuration. I’ve tried running the servo tests from the IDE, and I can’t get that one servo it to activate, but I don’t get any error messages saying there’s something wrong. Any ideas? Further troubleshooting steps?
Update: going through the calibration routine in WriteInstinct, I'm not getting any activity for the FL Elbow. I was looking through the OpenCat.h file which the docs suggest has the PWM info for the servo mapping, but it just wasn't clear. I was thinking I could move the PWM to another header and redefine the mapping, but I'm just missing something in the code to make this move.
Hey, the rear left knee of my Bittle also did not move anymore. I figured out that the cause is the PWM PIN with ID 0 which connects to the rear left lower leg (knee) (joint ID: 15). To test it, I first swapped the wires for the rear left upper (shoulder) and rear left lower (knee) leg parts, i.e. swapping the wires connected to PWM PIN 0 and 1, respectively.
I then saw that the shoulder is moving instead of the knee which confirmed that PWM PIN 0 is not working anymore. There are four pins on a given "chip" and about half of them are free usually, so I thought to make use of a free PWM PIN. Some forum posts like this one suggest to modify the PWM PIN to joint ID mapping to make sure the motor is being controlled over the new PWM PIN after swapping the wire. After modifying the pwm_pin struct, both the knee and the shoulder did move again. However, the problem now was that even after recalibration, ALL legs did move incorrectly when triggered to get to any initial pose such as the resting or zero pose. How can I debug this or resolve this issue?
Hi, were you ever able to resolve this issue? I ran into the same problem. I swapped the PWM headers. my array now looks like this:
byte pwm_pin[] = {12, 11, 4, 3, 15, 10, 5, 2, 14, 9, 6, 1, 13, 8, 7, 0 };
It solved the soft-servo problem. But during skill execution, the left-elbow does not seem to be receiving any commands. It remains in the same position the whole time. I wonder if @Plugh was correct when he asked:
"Do I have to remap it everywhere in the instincts and movements."
@Rongzhong Li - do you know what we're missing here?
Yes, you can swap 13 and 15 in the array. Ensure you activate the correct Board version and upload the revised code following the instructions. I recommend you use the 2.0 branch of OpenCat. It's more stable and easier to configure.
If it proves to be a hardware issue and can be fixed by swapping the pins, we will send you a half refund for the NyBoard.
Hi, do you have a video to show the servo's connection and movement? If you swap the pins of the dead servo and the active servo, how do they behave?
As to the code, in OpenCat.h, there's an array for the pin mapping. It means the 1st joint (head pan) is connected to the PWM pin 12, the 9th joint (FL shoulder) is connected to the PWM pin 14, and the 13th joint (FL elbow) is connected to the PWM pin 15, and so on.