- General Summary
I made all the code, written on python, for now implements a walking loop inside a kinematic model, so you can command a pose on the body, as well as feet position and also velocity and directinal commands for the walking loop. Controlled by a ps3 controller via bluetooth.
Arduino is used for speed up the reading and writing of signals, so in the future i can add other sensor, as well as position feedback... This communication is made via bidirectional Serial Commands, so servo pulses are sent to the arduino and angles on IMU are recived on the Raspberry Pi.
As soon as you see the project, you will notice i'm not using Raspberry Pi, thats becouse as i don't have batteries for now (This will be finished in the following updates), its more comfortable for me to work on the PC, but on Raspberry Pi it would work the same.
For the first update of the project i show you a video in which i compare the real robot model with the simulation model:
I'm using PyBullet physics engine, it is simple to use and seems to have a good performance as well as very precise results.
- Building premises.
I'm going to enumerate some important concepts i have taken into account for the robot design.
This robots depends hardly on its mass distribution and dynamics of the moving parts (legs). Thats why i decided to go for this servo configuration, having the coxa servo on the body, the femur servo on the coxa and tibia servo on the the femur, so there is only 2 servos moving with the legs.
This way, the less leg weight the less unexpected inertia, causing a better dynamic behavior.
Also the robot weight should be as less as posible becouse hobby servos can be overcharged easily.
About the mass distribution, this would define the Center of Mass which should be the closest to the Geometric Center, for this the building must be as simetric as posible, this way CoM is easier to locate and the control would be more predictable.
Most of the time the robot is disassembled and i will need to wait until i can print the new version (Final exams comming) which would be much lighter. Until that i'm starting to configure raspberry. (Powered by the batteries)
For now the code runs very well on raspberry but it is a bit slower than pc reading the data coming from arduino. Also raspberry is not powerfull enough to run pybullet on GUI mode, but on DIRECT mode it takes the raspberry at 40% of its capacity.
About the electronics, i'm going very carefully on it as i don't want to burn anything. So basically, the problem here is that, when i switch off the motors there is still voltage (~1,5 V) going trought that line. I think this is becouse the switch is cutting servo ground in stead of V+, so there is still some voltage drop between V+ from servo and common ground on arduino. Let me know your thoughts about that.
Also i'm working on a lighter version of the robot as the servos are a bit overloaded, i realized the parts are printed with 5-6 perimeters and up to 4 solid layers, weighing about 100 g for a femur. However, 2 perimeters and 2-3 solid layers the same piece weighs 40 g.
For next version i will make the body higher, becouse there is no much room inside. The batterie box is made for 6x 18650 litio batteries with the typical frame sold out there.
These renders aren't final version, there are lot of thing to polish in orther to make the design buildable.