The idea is to build a robot and use it in various experiments such as autonomous navigation. The ambition is to try to do something more rewarding that a simple “go forward, detect obstacle and turn left” type of programs and use as much as possible open source elements (a great game changer, on which I will write later on).
I think it is worthy to spend some time on this project, as it goes beyond a pastime and helps to understand how different technologies can interact to shape our future.
I have always been fascinated by the inner l workings of things, when I was a kid I used to disassemble stuff to study it and devise improvements, even when performances were perfectly acceptable. Among my victims: countless toys, a mechanical alarm clock (never resurrected), televisions (cathodic tube is great fun), record players, washing machines etc.
This vocation has evolved to present days into a fascination for hardware and software. With countless resources available in the open source communities and cheap hardware ordered via Internet, I think we are at the right convergence of events.
It is interesting to note that the building blocks of this thriving ecosystem of information and material providers that is nuts ad bolts, computers, sensors or software scripts might not necessary be so exciting for everyone when considered in isolation but the magic happens when people combine and re-combine them to create countless interesting and useful projects.
The Raspberry is the perfect example of this new hacking concept: a small and cheap Linux computer able to set and read the status of pins, and therefore able to send controlling signals to actuators sensors in the real world. There is naturally a Raspberry Pi community of enthusiasts and a huge amount of resources are available from Linux experts.
While I still need to acquire most of the hardware, I already have some ideas on the main building blocks of the project.
Essentially I want to send instruction to the Raspberry via Wi-Fi from Android and let it control the robot; this will open the possibility to have the robot accepting instructions on a specific port, thus allowing possible future improvement of the control logic as instructions can be generated not only by the human-operated remote but also from some logic embedded into programs.
In particular, I like the possibility to use external superior computational power to do some heavy lifting in case of complex operations and simply let the Raspberry move the robot by just by sending signals to the servos, this will be useful in case of experimentation with robot vision. At the same time, sensors attached either to the Raspberry or the robot logic will be useful to deal with the details and unexpected conditions such as how to avoid an obstacle on the path or to decide on the best alternative to fulfill an instruction.
The next step will be to design a proof of concept of the remote application and see if I can have the Raspberry to change the status of the pins according to singles from the Android device; the typical “blink the led” experiment with the added spice of the Android device as controller.