Archive for the ‘Carputer’ Category

XKCD GPS “Cyborg navigation” ported to Roadnav

Sunday, July 13th, 2008

So as you probably know, I am a fan of the webcomic XKCD. Back in May, Randall posted a comic and a blag article about his idea of a dead reckoning type navigation system, which every couple of seconds it speaks the distance and the direction to your destination. I’ve been hanging out with the excellent people at #geohashing, and one of them suggested that I look at the “cyborg script” for use on my carputer. Well I thought, why not port it to C++ and stick it in Roadnav?

So I went ahead and did the implementation in my semi-experimental wx3 branch of Roadnav, and it worked out pretty well! Its not present in any downloads on the Roadnav site yet . You can find it labeled as the “wxWidgets 3 Development Line (alpha)” at the Roadnav download page. Some nice things about using it inside roadnav:

  • You can enter the destination in a street address or raw coordinates
  • It marks the destination on the map that it shows
  • Cross platform support (Windows, Linux, OSX)

Now, there are a number of usability issues present with this implementation of the Cyborg navigation. For one, you can’t mute it (inside the program at least). For two, you can’t actually turn it off yet.

If you want to play with it, you can download the source code via SVN for Roadnav and libroadnav in the wx3 branch. Alternatively, you can download a snapshot from the Roadnav downloads page. If you’re just looking for a C++ version of the cyborg script, you can see it at this link.

Mind you, that whole branch is mostly alpha at the moment, but revision 1715 should work without any significant problems. Hopefully a stable release will be out by the end of summer (no guarantees here though). If you find bugs or have issues with that particular branch, drop me a line!

Despite being (in my opinion) the best open source GPS navigation app out there, I will admit that there are a number of large performance and usability issues with Roadnav. However, I’m hoping that we (though, at the moment its only me doing active development) can optimize it and rework its code base to perform just as well as any commercial GPS apps out there (if you’re wanting to do some development, join the roadnav-devel mailing list or contact me, I have a number of ideas that aren’t in the TODO list yet).

Original XKCD blag post:

Dynamic Options/Preferences Dialog Library for wxWidgets

Tuesday, April 29th, 2008

So I’ve been doing a lot of work related to my carputer lately, and one of my big focuses is getting Roadnav to be more touchscreen friendly so that I can use it as my primary GPS application. One of the biggest problems I’ve found with most applications (and Roadnav is no exception, unfortunately) is that most of the dialogs are simply too big for my screen. The preferences screen has especially stuck out as an offender here.

To solve this, over the last week I’ve created a set of generic classes that you can use in wxWidgets to create options/preferences dialogs that have a consistent feel to them, and can be easily created at runtime. Its setup in a hierarchical manner, and each layer of the menu is dynamically generated at runtime. Here’s a nice screen shot of the top level menu for your viewing pleasure.

Now, since I’m designing this for a touchscreen, right now the visual design is definitely touchscreen focused. However, its generic enough (thanks to wxWidgets sizers) that you can change the logic in the dialog to whatever you want it to be, without having to change the definition of your menus. In fact, if you do it right you can even switch the look at runtime because of all controls are created at runtime, so each one of the option classes is designed so that you can destroy its controls and then bring it back again.

Another cool option that could be implemented is loading the definitions for the options from an XML file or something similar — I’ve actually created something like that before in C# for the pGina project (see their SVN) — since everything is dynamic, it would be pretty trivial to do that.

Anyways, here’s an overview of how it works:

Ubuntu Mobile Screenshot on my Carputer!

Saturday, April 5th, 2008

Well, I’ve been putting in a lot of work trying to fix different things with my carputer, and I can proudly say that the software is *almost* ready for primetime (for real this time, none of that half-working crap I had before!). Check out my Lilliput LCD screen working PERFECTLY (which is a huge surprise, its a serious piece of crap) on my Ubuntu-Mobile desktop. Pardon my wallpaper, I need to change it so it fits a little bit better…

Its looking pretty good so far, if I do say so myself. Much better than what I originally had. Right now, I’m working on getting Roadnav integrated more fully into the hildon envionment that Ubuntu mobile uses. And I need to get the stupid media player actually *playing* my MP3’s… you’d think that would be really simple to make work.

Carputer Update: Ubuntu Mobile

Sunday, March 16th, 2008

Well… the weather is getting better, so I’ve been working on improving the software on my carputer.. since the gentoo installation was getting annoying to maintain and update, and the hardware works quite well (except for that stupid touchscreen!). So I installed the alpha version of Ubuntu (Hardy Heron) on it.. and its worked out quite well. I’ve used Ubuntu before, but its a totally different experience than Gentoo (though, the Gentoo experience definitely taught me a TON about Linux).

One problem I was having with the touchscreen was that if you turned it off, then evtouch would no longer talk to it and things wouldn’t work correctly anymore. So… this last week or so I was looking into it, and it resulted in this patch I created for xorg/HAL input hotplugging (xorg mailing list link here). Hopefully they put it into the next release or so… it would make hotplugging a lot easier with xorg.

Another problem is that a normal desktop is really annoying to navigate with a crappy touchscreen, so I was looking into what I could do to create a better interface… but then I found Ubuntu Mobile. Despite the shiny screenshots on their pages, it doesn’t look like its all completely implemented yet, and the default install environment has a really ugly background. Of course, its also still very alpha with a number of bug, so its not quite usable yet. I’ll have to hack on it. 🙂

So… in the future, expect to see my carputer section get totally revamped. One of the great things about Ubuntu is that most things *just work*, so that should make life a lot easier. And, hopefully it’ll work a lot better in a virtual machine than my gentoo install did (it had issues because of arch-specific optimizations… and I didn’t feel like recompiling EVERYTHING again… ).

VMWare and my carputer

Wednesday, September 5th, 2007

The biggest problem with the carputer I have is that its almost impossible to configure it easily — especially when its mounted in my car. So, what I’ve done is used VMWare to create a virtual machine that runs Linux on it, and then I used rsync to do a lil something like so from the virtual machine:

/usr/bin/rsync -apzv --delete --exclude=/dev --exclude=/sys --exclude=/var/log --exclude=/var/lock --exclude=/var/tmp --exclude=/var/run --exclude=/proc --exclude=/tmp -e "ssh" root@carputer_address:/ /

Which, of course, this command copies practically everything onto the virtual machine. Its a great solution so far (since you can easily copy changes back), the only real challenge was that I had to recompile the kernel to support the VMWare hardware. Haven’t gotten X working yet either, but I’m pretty sure that will be trivial compared to the fact that my carputer supports SSE2, but the host computer doesn’t, so I had to do the following

emerge -e world

after adjusting my build settings… grr. Recompiling 632 packages right now actually. Kept getting ‘invalid instruction’ errors all over the place.

Carputer Pictures Updated!

Thursday, June 28th, 2007

I’d like to point out that I just added some new pictures of the carputer and the AWESOME case that I was able to convince my dad to make! Seriously, the picture of the case does not do it justice. Heres one of them:

View of the carputer case.

You can view the other pictures of the linux carputer (including pictures of it mounted in my car, finally) at the carputer portion of the site.