Posted by Mike Redrobe | Posted in robots, Technology | Posted on 16-06-2013
1
This is a biped based on the BRAT design from a few years ago, updated to be controlled by the raspberry pi and so giving access to usb peripherals, camera wifi etc.
The robot is a 6 servo biped walker featuring three degrees of freedom (DOF) per leg. The robot can walk forward or backwards and turn in place left or right with variable speed. It can even do lots of Robo-One style acrobatic moves.
Currently using the interrupt driven servoblaster software to drive 6 servos.
Arms and head will increase the servo count, so may offload servo processing to an arduino in addition to the raspberry pi.
Bot balancing without gyros … for a few seconds at least
No gyros, no accelerometers – only a sonar ranger and lots of code.
The motors used are standard servos modified for continuous rotation, sonar sensor is a HC-SR04 as detailed in a previous post
Code ? Well here’s a simplified portion of the PID loop:
int Drive = 0; // PWM value sent to Servos
int Error[5]; // array of 5 Error elements
int P = 0; // proportional term
int I = 0; // integral term
int D = 0; // derivative term
#define Current 0
#define Sum 1
#define Last 2
#define SecondToLast 3
#define Delta 4
int PID() {
Error[Current] = SetPoint – Ptime;
P = Error[Current] * Kp;
Error[Sum] = Error[Current] + Error[Last] + Error[SecondToLast];
I = Error[Sum] * Ki;
Error[Delta] = Error[Current] – Error[Last];
D = Error[Delta] * Kd;
Drive = P + I + D;
Error[SecondToLast] = Error[Last];
Error[Last] = Error[Current];