This application is a C++ application that I wrote for my employees as part of our interactive shopping centre kiosk product. The bulk of the kiosk application is written in Adobe Flash with some backend code (in Perl / Bash and C++) for additional functionality.
This module provides the data for an on-screen route planner so that the shoppers can find a route to a particular shop from the kiosk. A bit like a TomTom for shoppers.
It loads an XML map of connected nodes and performs an A* search between any two points on the map. The returned path is returned as XML with an option to display the output graphically for debug purposes.
After many false starts trying to get this application cross-compiling on my PC (I’ve not worked out yet how to tell the compiler to link ARM rather than x86 libs) I decided to copy the source onto the Pi and compile it on that.
The Pi was short of a few dev libraries however these were available from the standard distribution and it didn’t take too long to work out which ones I needed.
Once that was done the code compiled and worked just fine with no changes to the source or the makefiles.
It took a lot longer to compile (2 minutes as opposed to 4 seconds) and a little longer to calculate / render the search (9 seconds as opposed to 3 seconds). The search data used was a subset of streets around our London office and is used for benchmarking purposes only.
The results are not too shabby considering we’re comparing a 700Mhz single core CPU against an Intel 2.2Ghz Dual Core laptop with all the bells and whistles (fast SATA hard drive, 4GB RAM).
I’ve come away from this experiment deeply impressed; not only is Linux easy to work with across platforms but the Raspberry Pi is an extremely tidy piece of hardware for the money. File access is understandably slow though, so I will continue my experiments with the cross compiler.
Unfortunately the Raspberry Pi doesn’t seem to have a decent Adobe Flash player alternative otherwise I would seriously consider porting our interactive kiosk application.