Well, sooner or later it had to be. I am going to build a vehicle that is controlled from my Raspberry Pi. I know, there are tons of such projects out there, but this simply is a must. And I think I am doing things a little different…
This blog post is meant as a short “introduction” on why and what. The actual documentation of my efforts will go in blog posts with a “Pi-Hicle Part xx – some description” title.
The idea started the instant I saw a “Big Trak” toy vehicle in a shop. Back in around 1980-1982, I can’t remember exactly the year, this was the toy of dreams. I wanted one for christmas but then I met a new boy at school who was deeply in electronics (we were about 13-14 years old and he was repairing TVs and even built an 30-channel analogue mixer!). His bigger brother had an ZX-81 and we spent every afternoon programming that thing. So I opted for my own ZX-81 for christmas, the “Big Trak” was history.
Fast forward more than 30 years: The “Big Trak” is back in shops. I am still tinkering with electronics and, even better, I can buy my own christmas presents… Hooray!
So the plan is this: take a Raspberry Pi to control a vehicle. The keypad on the “Big Trak” will be exchanged for a touch-screen. The actual driving – and later environmental sensing – will be done by an Arduino. This way if I do something wrong, it’s just a new Arduino for 10 bucks, not a 40 bucks Raspberry Pi.
In more detail I have planned:
- Model a simulation loosely after the original “Big Trak”, programming and view on touch-screen
- Ability to move a real vehicle with the above programmed instructions
- Means of calibration for different surfaces (90 degrees turning might take longer on carpet than on wood)
- Remote control via web interface (ad-hoc WLAN?)
- Add distance sensors and webcam, control sensors by Arduino
- Fully autonomous mode
Possible differences to other projects out there:
Firstly, I will be “re-living” the Big Trak feeling. That is to program the vehicle in simple steps and then watch it move accordingly. I am not going to use any highly sophisticated robotics library or real time OS. Everything should be done with the things the Arduino and the Raspberry Pi do offer out of the box. Of course this means that I will be doing some things plainly wrong in terms of “good robotics”, but I will live with that.
Secondly, and this was a real surprise even to myself, I am going to do the complete maths stuff from scratch. Displaying a path on a screen means applying some vector operations such as rotations and translations and so on. And I am having real fun with doing all these calculations, trying to recall what I learned at school and in university. Perhaps that is the physicist coming through again. I am trying to document and explain all these things too, so maybe this will be a little bit educating for you, as it is for me. At least it may give all parents out there some good replies if their children ask “Why do I need to learn about vectors? I will never need it again.”
The touch screen I am using is an outdated “μLCD-32PT” with Picaso SGC firmware from 4DSystems. They don’t call it “end of life”, it is actually “legacy”. Happily enough all the old software can still be downloaded from the website. The display communicates via serial interface and has a big set of commands for drawing, displaying graphics, even playing wav-files, and touch control. I am going to write a library class in Python to control the display.
Have a look at the current status of prototyping:
At this stage I am heavily using my “Pi-All-Out board” for communication via serial and I2C with the display and the Arduino. As I have level converters on the board, I am able to connect anything I have at my disposal to the Raspberry Pi.
I suspect this is going to be a lengthy project, so I have created a new category “Pi-Hicle” for easy access. The source code and schematics will be available on my Github repository as soon as they are usable.
And, as always, comments and suggestions are heavily welcome. Especially if you have more experience in robotics than me, please be invited to comment on any things I may do wrong.