Hi,
I am working on a walking robot and till now I was able to build 4 legs funny robot, I learned a lot while programming the walking harmony of that robot, unfortunately, I used delay function but soon in future I will replace all delays by mills(), I have some questions in mind I would like to share it with you guys:
- I saw online that advanced walking robots used Brushless Motors, but as per my limited information I know that servo motors are the best for accuracy, is there Brushless servo Motors? and what is your advice for a cheap strong motors used for accurate walking robots?
- Any idea what is the motors that used in Boston robotics? I am really confused regarding the motors types out in the market and the information online is there any guide tells you what is the best motors for arms and legs and how to drive them?
- Also, I have an old question in my mind, do you know how to convert a PC motherboard to robot brian with GPIO? I need this to be able to drive a robot with a board that has i7 CPU in the future?
Here is the link for my walking robot and thanks in advance for your comments:
Nice!
hj
Glad you like it, thanks.🙂
Very nice indeed !
Have you considered a bit of rubber on the bottoms of the feet to give it some traction ?
Yes, I went to Home Depot and I couldn't find something can replace the feet.
Maybe something from the tool department ?
Like maybe that stuff they use in the bottoms of tool box drawers ?
Or maybe a piece of those gel pads that you set your cell phone on so it doesn't slide around the dash board of your car
Can you post your code?
It seems to work by suddenly flicking a leg forward to overcome friction in which case slippage would be essential?
What about using old compact discs for the feet. I like the idea of making it out of all recycled materials.
Hi, sorry for the late reply, this is the code:
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
#define FREQUENCY 50
int servoMidPosition=295;
int stanUpAngelHip=430;
int standUpKnee=95;
void setup() {
pwm.begin();
pwm.setPWMFreq(FREQUENCY);
}
void zeroServoPosition(int servo1,int servo2,int servo3,int servo4,int servo5,int servo6,int servo7,int servo8,int servo9,int servo10,int servo11, int servo12,int servo13,int servo14,int servo15,int servo16)
{
pwm.setPWM(servo1, 0, servoMidPosition);
pwm.setPWM(servo2, 0, servoMidPosition);
pwm.setPWM(servo3, 0, servoMidPosition);
pwm.setPWM(servo4, 0, servoMidPosition);
pwm.setPWM(servo5, 0, servoMidPosition);
pwm.setPWM(servo6, 0, servoMidPosition);
pwm.setPWM(servo7, 0, servoMidPosition);
pwm.setPWM(servo8, 0, servoMidPosition);
pwm.setPWM(servo9, 0, servoMidPosition);
pwm.setPWM(servo10, 0, servoMidPosition);
pwm.setPWM(servo11, 0, servoMidPosition);
pwm.setPWM(servo12, 0, servoMidPosition);
pwm.setPWM(servo13, 0, servoMidPosition);
pwm.setPWM(servo14, 0, servoMidPosition);
pwm.setPWM(servo15, 0, servoMidPosition);
pwm.setPWM(servo16, 0, servoMidPosition);
}
void stanUp(int servo0,int servo3,int servo4,int servo7, int servo8,int servo11,int servo12,int servo15)
{
pwm.setPWM(servo0, 0, 227);
pwm.setPWM(servo3, 0, 410);
pwm.setPWM(servo4, 0, 420);
pwm.setPWM(servo7, 0, 210);
pwm.setPWM(servo8, 0, 227);
pwm.setPWM(servo11, 0, 410);
pwm.setPWM(servo12, 0, 420);
pwm.setPWM(servo15, 0, 210);
}
void stepForward(int servo0,int servo3,int servo4,int servo7, int servo8,int servo11,int servo12,int servo15)
{
pwm.setPWM(servo0, 0, 251);
pwm.setPWM(servo3, 0, 400);
pwm.setPWM(servo4, 0, 410);
pwm.setPWM(servo7, 0, 210);
pwm.setPWM(servo8, 0, 217);
pwm.setPWM(servo11, 0, 410);
pwm.setPWM(servo12, 0, 396);
pwm.setPWM(servo15, 0, 200);
}
void stepTrue(int servo0,int servo3,int servo4,int servo7, int servo8,int servo11,int servo12,int servo15)
{
pwm.setPWM(servo0, 0, 300);
pwm.setPWM(servo3, 0, 410);
pwm.setPWM(servo4, 0, 420);
pwm.setPWM(servo7, 0, 210);
pwm.setPWM(servo8, 0, 227);
pwm.setPWM(servo11, 0, 410);
pwm.setPWM(servo12, 0, 347);
pwm.setPWM(servo15, 0, 265);
}
void secondStepForward(int servo0,int servo3,int servo4,int servo7, int servo8,int servo11,int servo12,int servo15)
{
pwm.setPWM(servo0, 0, 300);
pwm.setPWM(servo3, 0, 400);
pwm.setPWM(servo4, 0, 370);//
pwm.setPWM(servo7, 0, 200);//
pwm.setPWM(servo8, 0, 258);//
pwm.setPWM(servo11, 0, 420);//
pwm.setPWM(servo12, 0, 347);
pwm.setPWM(servo15, 0, 275);
}
void secondStepTrue(int servo0,int servo3,int servo4,int servo7, int servo8,int servo11,int servo12,int servo15)
{
pwm.setPWM(servo0, 0, 300);
pwm.setPWM(servo3, 0, 410);
pwm.setPWM(servo4, 0, 270);//
pwm.setPWM(servo7, 0, 320);//
pwm.setPWM(servo8, 0, 320);//
pwm.setPWM(servo11, 0, 310);//
pwm.setPWM(servo12, 0, 347);
pwm.setPWM(servo15, 0, 265);
}
void loop() {
//zeroServoPosition(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
// stanUp(0,3,4,7,8,11,12,15);
stanUp(0,3,4,7,8,11,12,15);
delay (330);
stepForward(0,3,4,7,8,11,12,15);
delay (330);
stepTrue(0,3,4,7,8,11,12,15);
delay (330);
secondStepForward(0,3,4,7,8,11,12,15);
delay (330);
secondStepTrue(0,3,4,7,8,11,12,15);
delay (330);
}
The slippage is not important, even I would like to avoid it, I think I need to have angels instead of straight legs.