Earthquake

Today early morning I sat in front of my desk, when I suddenly felt everything slightly moving. Robert who sits next to me felt it as well, but most of the others in the office didn’t.

Last time I sensed an earthquake was in 2007 on our South America camper trip in Argentina . Unbelievable that five years passed already since we were there.

I followed a feed with recent earthquake events for a while, but it didn’t show anything relevant at first. Browsing the page, I found the event which had a magnitude of 5.1. The epicentre was near Parma in northern Italy.

On this map, you see the position of people that reported that they felt the quake.

Screen went black

This morning, I had a short moment of horror when I turned on my Netbook. After the ubuntu splash screen, it went black and didn’t respond to any keys. The only response was for the power key, where it displayed the ubuntu splash screen again and shut down.

My Acer aspire one has the dreaded Intel gma500 poulsbo graphics card. This graphics chipset was bought by Intel, and it’s absymal driver support has embarassed them ever since. It is also the reason I still run maverick on the netbook. Knowing that, I was even more horrified by the screen turning black.

First thing was trying to boot an older kernel. In case you’re not presented with a grub menu, press shift after the BIOS.  Didn’t help, not even in recovery mode.

So I booted to a console, and examined

$cat /var/log/apt/history.log | tail

Start-Date: 2012-01-24  21:15:04
Commandline: apt-get install python-pyopencl
Install: nvidia-current:i386 (260.19.06-0ubuntu1, automatic), nvidia-settings:i386 (260.19.06-0ubuntu1, automatic), python-pyopencl:i386 (0.92~beta+git20100709-1ubuntu1), python-pytools:i386 (10-7, automatic), python-decorator:i386 (3.2.0-1, automatic)
End-Date: 2012-01-24  21:20:26

The only thing I installed yesterday was python-pyopencs as it was the only package in the repository that seemed like a starting point to experiment with OpenCL. It has dependencies to nvidia drivers, but I didn’t think that installing these would break my system.

So, all I had to do was “apt-get purge python-pyopencs nvidia-current nvidia-settings” and the system would boot again normally.

It’s amazing how a linux system that doesn’t boot can almost always be saved relatively easily. With a Windows system that has the same symptoms you’re fucked.

Visited countries

A long time ago, I found a web service to visualize a map with all the countries you have visited. Now I finally figured out how to get it displayed in wordpress using the code-embed plugin.
Well, since we got kids, travelling is in hibernation mode, but we already have plans on where to go when the boys grow older.

So, here are the countries I visited:
The countries where I flew paraglider are red, the ones I only visited are blue.
%CODE%

Robot Arm part 1 packaging and simple manipulation

Another project that I had in mind for a while was to experiment with robot arm path planning and inverse kinematics. If you don’t know what that is, think about how robot arms could be programmed. The simplest form would be capture and replay, in which you have a controller which which you record how you manually move the joints. The robot can then replay the movements. We humans have developed a good  intuition for moving our body parts and grasping, but when it comes to formally describing what you do with the joints of your arm, it quickly becomes difficult. My younger son is in the phase of learning to grasp right now, and it’s amazing to see how the eye arm coordination evolves. The second approach would be to program it like a CNC milling machine with something like G-codes.  This is a bit more general and more exact, but it’s also more difficult to do collision avoidance. And it’s complicated to calculate as most joints tend to be revolutionate. Both these approaches are only suited for repetitive tasks often found in industry automation, but completely unsuited for robots in dynamic environments. Now with inverse kinematics, you can tell the robot where the arm should move to in cartesian coordinates, and it does all the arm geometry calculations and positions the gripper to the correct position in the desired orientation. Maybe there are obstacles in between the current and the target position. To navigate around these, you also need path planning. That is usually done in configuration space. Real robots have also to care about dynamics such as inertia, but I won’t go that far.

Continue reading “Robot Arm part 1 packaging and simple manipulation”