Thursday, October 11, 2007

Slackware experience

To this day, I can still claim that I'm no expert in these areas, still a noob in his early stage. Nevertheless, here's my story.
Well, to begin with, my experience with Linux started when I installed Red Hat 6 in 1999. Back then, it was hardly useful for day-to-day use, and further, having no internet connection at home made the experience simply lackluster. During my undergraduate days, I had several encounters that in one way or another further developed my interest in Linux. I tried Gentoo on my PC which took me 2 days to install it. If I remember it correctly, the installer had to download every single source from the net, and then compiling each to a hardware specific package which made the installation process, well, very time consuming. Some other distros that I had tried are SUSE, Fedora, Debian, Slax, and Knoppix. I also used Solaris during industrial attachment and in my recent job. I was merely using it to run some ic design applications (Cadence, Synopsys, etc) and no more than that.
Here's the Slackware story. During the inter-sem project, I was doing a robotic project on environmental mapping. The idea of environmental mapping (SLAM) is simply to use the robot, which is RWI Magellan Pro in this case, to wander around the environment and then to make a map based on several features captured from the environment and on the same time to localize itself in the map. The RWI Magellan Pro had a pretty old hardware and Red Hat 6.2 installed in it with its own controller system, i.e. rFlex controller. Basically, we could access the robot devices and sensors through the library provided by rFlex controller. I spent couple of weeks to understand the system and also on SLAM. Then, I found this Player/Stage project which basically provides a simple interface to devices and sensors in the robot. The cool thing is, it acts as a client and server system that communicates over the IP network. When Player is running on the robot, the client control program could be run from other computer (a very fast system that could process algorithms in real time), and connects to it via a standard TCP socket. Another good thing is that Player/Stage could be run on many robotics system, thus code developed in one system can be run on others with very few modifications.
Problem is, Player/Stage needs several libraries that are not provided by Red Hat 6.2, and for some reasons which I can't really recall, I had to install the newer kernel for that. Anyway, I decided to install a newer version of Linux, and I chose Slackware 10.0 for this after trying several other distros like Red Hat 9, Debian, etc. I can't really remember why I ended up with Slackware. Based on the project report, Slackware was chosen due to its small size (the hard disk in Magellan Pro is kinda small) and robustness compared to other system, and more importantly the kernel version 2.4.26 which is compatible with Player/Stage. I think, I also had some problems installing Player/Stage on Red Hat 9. FYI, Magellan Pro doesn't have CD-ROM drive in it, so the installation was done via NFS. Anyway, for obvious reason, I tried to install Player/Stage on PC first in order to determine which Linux distribution to use.
The Slackware installation, as I remember, didn't go really smoothly, but anyway in the end the system worked as intended. Then, I installed (in no particular order): Player, Stage, Pmap, Lodo. Some time was then spent to install Sick LMS laser sensor which created much hassle, and by this time the 6-week project was near to its end and yet I haven't implemented any single code for the SLAM.
Apparently, Player/Stage has this Pmap package that is used for laser-based mapping, which made the system, or the project for this matter, complete with a few modification on the Pmap source code and calibration on the odometer. Also, I managed to transfer Matlab code on Kalman filter implementation of SLAM to Java that didn't really work on the robot (it somehow worked on Stage). According to my supervisor, the idea of Kalman filter is understandable to some extent however the implementation is rather tedious for my level. He also convinced me that I wouldn't be able to implement the algorithm on the robot at such stage (undergraduate) with very little time left.
Anyway, my supervisor was totally satisfied with my work (since previously the robot had lied there uselessly on the lab) and instead, decided to change the project name to fit the current work. He then offered me to continue the project for my final year project.
To his surprise, I decided not to continue the project as I thought I have done what was really need to be done. Anyway, in my humble opinion, the field of robotics and AI in Singapore is really way behind than that of other countries like Japan, Europe, or USA. While those local polytechnic students are still trying to find out how to win the robot soccer competition, our fellows in Japan have created a system that mimics human being, responds and interacts to us.
So, I then moved to IC design and electronics industry, which was really interesting back then, but no so now, hehe.
Well, to my understanding, I just have some mere surface knowledge on each field, that enables me to work in each industry but not enough for me to start my own company. IC design was really interesting, but I ended up doing analog design which was more to intuition than logic. I managed to produce two local conference papers, not of quality one though.
I guess, I really have to go back to the basic, which is programming, that has excite me since back then in junior high. Anyway, recently I found this operating system, Minix, which actually inspired the Linux to the its existence now. While Linux kernel is based on monolithic kernel, the newer version of Minix (Minix 3) is based on micro kernel, which is more elegant and reliable. I decided to learn more on it, and just borrowed a book from the library: "Operating Systems: Design and Implementation". Hopefully, I could finish it by the end of the year.
Back to Slackware, I'm still using it up to now on my Thinkpad T40 laptop. Hopefully, it thrives. Well, if it is not, then I hope Minix will thrive and become the most popular OS, which is rather impossible here due to the concept of inertia, as explained by Prof. Tanenbaum.

No comments: