I’ve been playing with WebGL recently and have been putting together some toy projects. Recently I created a GPU accelerated version of Conway’s Game of Life. If you have Google Chrome or the open source Chromium browser, you can view it on my WebGL Github page. You will need to have a reasonable graphics card as it renders 3 parallel Games of Life on a 4096×2048 grid with a 3d torus topology. You can zoom in with the scroll wheel to see more detail. Each color (red, green, blue) is a separate game of life. You can also activate blocks of cells by clicking with the mouse. Its mesmerizing fun for hours!
I recently put together a short demo about Q learning and SARSA learning for a class I was taking. The demo involved running the two algorithms in parallel in a simple maze world. The world, the agent, and the learned Q function are drawn using OpenGL.
A few people suggested I make the presentation and demo code available for others, so here it is: You can download the code for the reinforcement learning demo from GitHub, and I have attached the presentation as well.
Over the holiday, I’ve added a few tools to the NXT Tools I’ve been developing. One is a simple python tool to use gstreamer to convert any gstreamer readable audio format to the NXT’s native RSO format. Also I’ve added a very basic tool to use a computer to interface a Wii remote (aka wiimote) to the NXT brick.
I’ve been recently playing with my new Lego NXT robotics kit. Being a Linux nerd, I naturally wanted to do the programming on Linux using languages I like. To this end, I’ve been using the nxt-python project and NXC. However, I found the nxt-push script a little cumbersome and not very user friendly, and the nxt-filer gui was less than useful. I didn’t want to develop a complete file manager interface. After all, file managers have been redesigned and reimplemented a million different ways. All I really needed was a file interface to the NXT. Enter Fuse. So, I spent some time yesterday and developed a Fuse interface for the NXT using nxt-python and fuse python bindings. You can find the interface in, what will be, a collection of tools for manipulating and controlling the NXT brick on GitHub.