I made a mistake when looking at the library V-USB. It seems to require a processor that is 16 Mhz or faster, and the Arduino Fio is only 8 Mhz. I do have a Arduino Pro 16 Mhz that runs on 5 volts, but I also have an Arduino Uno, which is 16 Mhz and has a 2nd chip on it, an Atmega8u2 which acts as a USB Device. This means I’ll still be able to get this to work, but I’ll have to use a different chip than I originally thought.
Other than that not much else is new. I plan on working on getting the USB drivers working on the Atmega8u2 so it shows up as a keyboard and does something simple, like press ‘A’ every 2~3 seconds to verify that its working.
Just wanted to put an update out about my game controller. The controller currently communicates over serial to the computer and requires a special driver for it to send key presses. Right now, I send key presses via a C API I access from python, but I am working on a new solution. I am trying to get V-USB to play nice with my Arduino Fio, which shouldn’t be a problem. Hopefully, once I have that figured out I’ll have a working wireless MAME Arcade controller and I can start working on a proper case for it instead of the cardboard box its in. Not that the Sparkfun box isn’t awesome, but it could due with a more comfortable shape than it has.
A new site I have been helping with is up and running. try.rakudo.org is a site to let people try out rakudo right in their browser. It connect the browser to an instance of the Rakudo REPL running on the server to let you evaluate any sample code (within reason) you’d like. It has some obvious limitations, anything that takes longer than 15 seconds is probably an endless loop and will be killed and it has limitations on memory usage for the system.
My next goal for the site will be to introduce a tutorial system into the website’s interactive terminal. The current plan is to follow along the outline of the rakudo book and build a set of interactive tutorials to teach new users about rakudo, and perl 6 in general. Maybe I can extend it to use other backend but for now its focused on the rakudo backend.
Any questions or comments are welcome. Please feel free to comment on the site and its usability or any flaws you may find.
I would like to outline of my GSoC goals and objectives:
My Google Summer of Code (2010) objectives are to integrate libffi into the NCI framework and to build a new Stack Frame builder that takes advantage of the llvm.
NCI Framework – The current NCI system has a few limitations which I am going to try to alleviate. I don’t know if I will be able to remove all of the limitations, but I will try to add all of the capabilities of the libffi library to the core of Parrot. This includes being able to define structures as data types for calling functions, adding a few new data types on systems that support them (this would be 64 bit integers on systems that have 64 bit integers, and etc.), as well as adding improvements for calling functions in foreign libraries. The current NCI system in Parrot is not capable of defining a structure for instance, or int64 types. I plan on implementing all of the supported data types in libffi as parts of the modified NCI system. I do plan on retaining the current functionality of the NCI system for people without libffi. I don’t think parrot currently bundles any third party libraries with parrot, but I do know python, for example, bundles libffi with its source code and builds its by default if you don’t make it use your system libffi.
Stack Frame Builder – There are a number of places for integrating the llvm into parrot. One obvious place to start is with the stack frame builder. Translating the stack frame into llvm-ir and running some of the llvm optimization passes over the resulting code could provide parrot with both a JIT system and some speed ups of the generated code. It could also be possible to dump the llvm-ir code to a file, so you end up with a sort of pbc to llvm-ir translation. The resulting llvm-ir can also be compiled into a native binary or dynamic library, which would also be useful because that could cut out some of the overhead for libraries.
The current plans for the stack frame builder are still being mapped out, but for now I am focusing on the NCI system, and I am hoping to have that knocked out relatively quickly so I can move on to the work with the llvm.
I am starting work on a new robotics project. The current goal of this project is to have a set of robots that have an ad hoc wireless mesh network, for research purposes at Auburn University. Professor Biaz is conducting research on mesh networking systems. To make his life easier, he has enlisted my help with programming a set of robots that he can use for broadcasting his mesh network.
A current need for the system is a localization system for navigation inside the building we are working in. Utilizing OpenCV and web cameras mounted on the robots, I plan on creating a SLAM system that uses maps of the ceiling of our building for navigation purposes. With an upwards facing camera, and a map of the ceiling I should be able to use OpenCV to locate where the robots are on the map.
Right now, I am working on a proof of concept, if this works, I’ll update this and move on to maybe a more general library.