A 3D data visualization, done in processing that takes info off the facebook API and uses it to bring some things to light about my list of friends, and what is going on in my facebook existence. In short what you see above is each one of my friends being placed in an orb with a mass proportional to the number of mutual friends we have, and connected to each mutual friend by a purple line representing a simulated pseudo spring/dampener system. Each friend is also connected to a fixed point (representing me) via a much weaker blue spring. Once everything is connected and the orbs are released from their might-as-well-be random positions, some kinda interesting behavior emerges.
After the initial chaos settles, clusters organically form and begin to move independently. Its impossible to tell from the video, but each one of these clusters can actually be traced to the different circles of friends I’ve made in the past . The largest cluster is obviously UCSB, and some of the smaller ones I’ve linked to the high schools I went to, friends I made studying in Japan, people I’ve reconnected with from middle school, and even highschool summer programs. Kinda neat.
There is also another screen (no video yet) that, in a similar manner does a live display of everything occurring in the current user’s (ok only me so far) news feed. So if two friends write one another, they both appear, the spring slingshots from the sender and they oscillate vigorously for a few minutes until the dampening slows ’em down. Visually, I still think it needs something though…
I also plan to do a few, more statistical/informational, screens in 2d that give info about my friends as a group; things are looking busy until winter break but I hope for the time to implement this soon. Ultimately what I want from this project is something I can dedicate a computer (or a Chinese ipad) to and stick on my wall to be pretty and optimally tell me a bit about my social interwebs. Once I get it done I’ll try to make it easy to run between multiple users and post up the source.
Now that I’m back in the business of keeping an up-to-date blog , here is a post describing in more detail the research I worked on during my stay in Japan. Of course the best, and unabridged version can be read here , or the slides from my talk here.
But in short, the work I did with the Osuka-Ishikawa Robotics Laboratory was on passive dynamic locomotion, and more specifically with what is being called the Phase Transition Phenomenon. As I described briefly in a previous post, the idea behind passive dynamic locomotion is that machines can be created which ‘walk’ passively; ie without the standard array of sensors/actuators that are typically required for this sort of task. Through clever mechanical design the control is implied in the physical structure and thus it is said that the system utilizes morphological computation to control motion. Of course these robots must be placed on an incline such that their decent down the slope allows them to regain the energy lost through the inelastic foot collisions. Furthermore, devices of this sort have started to be developed which are able to walk as well as run (running implies a phase of motion in which both feet are off of the ground) depending on the incline angle. Here is a video from another lab which has collaborated on some of this research:
While in Osaka my work involved setting up a simulation environment (using the Open Dynamics Engine, a free open source C++ rigid body physics engine) in which similar 3-dimensional passive dynamic walking mechanisms were tested and evolved to optimize walking/running ability. Below is an image showing an example body, and the parameters that were evolved.
Again, more detailed explanation of the procedure and results can be found in the paper linked to above, but the gist of it is that a Genetic Algorithm was employed utilizing a handcrafted tailored fitness function, 70% crossover, 25% mutation, 10% mutation amount, a population size of 256 and Stochastic Universal Selection to maintain a high level of genetic diversity. On my desktop PC 150 generations of evolution took ~12 hours, which certainly put a damper on the number of variants I could test given the limited amount time I was Osaka working on this… At any rate I still found that the GA was effective in creating machines that were increasingly able to walk/run below are a few graphs showing the course of the evolution.
Below is some video showing the initial randomness of population0 compared to population150’s ability to take several steps before falling over. Although stable walking/running motion was never achieved, I still think the results are pretty interesting. In the paper/slides I talk about how things like a better fitness function, more generations of evolution, a faster program (or supercomputer), careful introduction of additional a priori knowledge , a different incline angle or body configuration could have improved this. I am not currently working on developing this any further, but I found the study to be quite interesting and would definitely consider taking it [or something similar] up again in the future.