How the Software Works
Here is a quick overview of how the current software works from startup to shutdown. All the code is open source, so you can browse through it here. Below is a basic flowchart.
Step One: Startup Andy
To start Andy, flip the switch on the back of him. This allows current to flow from a 11.1v 1.3 amp lipo battery to the L298N motor drivers and to the Raspberry Pi. Once the Pi is booted up, it automatically runs boot.sh, a file that starts Andy’s software. Next, Andy checks two configuration files. (Note: Not all features in those files are implemented) In the files, it checks whether to start the server, (Check for client program logins) and run some modes. (Modes are a future feature). Finally, Andy sets the silence for the microphone.
Step Two: Get Command
Now that Andy is up and running, he becomes a state machine. He will listen for a command from both his mic and the server (If started). Once the command is received and converted to text, the command can be executed.
Step Three: Execute Command
Next, Andy will run the correct function from cmds.py that corrisponds with the command. If the command is the shutdown command, the software and hardware shutdown and the program ends. But, if it is any other command, the command is executed and the program goes back to step two.
Conclusion
There are many other aspects to Andy’s software, over 1600 lines of code. Hopefully this log will give you an understanding of the basics. Also, if you haven’t, watch a Demo video of Prototype #1.
The Brain
Andy has a Raspberry Pi for a brain. It controls absolutely everything from motor control to speech recognition. The Raspberry Pi runs Andy’s software, which is explained here.
Power
Andy is powered using a 11.1v 1300mah lithium polymer rechargeable battery pictured below. It is regulated for the Pi with a UBEC.
Motor Driving
The motors in Robosapien are driven with three L298N motor drivers pictured below with a blown up Raspberry Pi. Each driver can control two motors, so Andy can drive a total of 6 motors.
GPIO Expansion
Since the Raspberry Pi doesn’t have enough GPIO pins, I use a MCP23017 chip to add more. Right now all that I hook it up to is a LED.
Conclusion
Lots of features will be added or removed when Andy migrates to 2.0. Hopefully, a version two prototype will be complete before August 4th.
Schematic and Features for Version 2
I am starting to work on Andy’s new hardware. His new body will have 10 degrees of freedom, unlike the old Robosapiens 6. While I wait for orders of parts to ship, I began drawing and testing a new circuit with many new features.
New circuit features include:
- Battery Voltage Monitoring
- Power on LED
- 5 Segment LED output
- 10 servos (4 for the legs, 6 for the arms)
Battery Voltage Monitoring
With this new feature, if Andy is left on too long, instead of powering off because of under voltage and potentially corrupting the SD card and then finally destroying the Battery, Andy has a built in circuit to monitor it’s own battery voltage and then power itself down if voltage is low. Also, the battery level can be displayed in a 10 segment LED bar graph.
Power On LED
On the new Andy, the Raspberry Pi will not be visible through a clear case. So, Andy will have a green LED connected to 3v3 that turns on when the Raspberry Pi turns on.
5 Segment LED Output
Although I haven’t found a five segment version yet, (They are all ten) A LED bar graph will display battery voltage, current decibel level, and blink for errors and other useful output that Andy can not show now.
10 Servo Motors
10 servos means 10 degrees of freedom! Andy will have 4D0F in his legs instead of 2, and 6 DOF in his arms instead of 4. (3 servos per arm).
Conclusion
Hopefully this August I will have the parts for Andy’s legs so I can build the biped. I also hope to film a demo of him walking and turning. Sometime this fall he should have the other features above, and Maybe this winter he will have arms. But, I cannot predict the future so maybe he will be done in September, or maybe I will wreck a bunch of stuff and not finish him till this winter. 🙁 If you have any ideas/features you would like me to add, feel free to comment.
For more detail: ANDY A Multi-Purpose Humanoid Robot