Archive for the 'McMaster' Category

Thesis Design Project: Robot Videos on Google Video

Sunday, July 2nd, 2006

This is the last thing I do for this project. It’s been fun, we made a great product, but this is it. I put the 3 robot videos on Google Video, take a look if you like. The first video is rescuing 3 victims (eggs), the second video is blockage clearing, and the third video is security camera footage of the Gates’ rescue. You can read more about the project here.





McMaster Engineering Convocation 2006

Sunday, June 11th, 2006

This past Friday was a pretty big day: Five years of Software Engineering and Management came to a close, with a 2.5 hour Convocation Ceremony. Thirty hours of class per week, endless studying, late night programming, weekends spent at UTM library – from a schooling point of view, I guess it was worth it.

Don Pether, CEO of Dofasco was given the Honorary Degree at my convocation. That week McMaster also gave Michele Landsberg, Pat Quinn, Bob Rae, Milli Gould, Ed Buffett, M.G. Vassanji, Douglas Coleman, Ronald Bayne, and Charles and Margaret Juravinski Honorary Degrees also.

HFO Scholarship and Joe Volpe

Sunday, May 14th, 2006

This past Friday I was at a banquet were I was one of the recipients of the Hellenic Federation of Ontario Scholarship. During the banquet a man was going around to each table greeting people and introducing himself. I didn’t recognize him, but one of my guests that night did. It was Joe Volpe the MP of the Eglinton-Lawrence riding and the former Immigration Minister of Canada. Even more interesting, on April 21st 2006 Mr. Volpe announced he would be running for the leadership of the Liberal Party of Canada:

The Honourable Joe Volpe, Member of Parliament for Eglinton – Lawrence, announced today his candidacy for the leadership of the Liberal Party of Canada.

He told a crowd of five hundred enthusiastic supporters that it is because of the Liberal Party that Canada is a great society – tolerant, accepting, where growth begets opportunity and equality.

Here is a photo I took of him that night:

A few more random pictures from that night here

Canadian Hellenic Greek Scholarship

Tuesday, May 9th, 2006

I got some good news earlier this week; I’ll be one of the recipients for the Canadian Hellenic Greek Scholarship this year. The banquet to receive the scholarship is this Friday at the Cypriot Banquet Hall in Toronto. It’ll be a nice end to a busy year as the McMaster Greek Society president.

Update May 15 2006: Joe Volpe was at the banquet

McMaster Kipling 2006

Sunday, April 16th, 2006

Rudyard Kipling once said:

Gold is for the mistress, silver for the maid
Copper for the craftsman, cunning at this trade
‘Good!’ said the Baron sitting in his hall
But Iron, cold Iron, is master of them all!

Every year at McMaster (and other schools) the ‘Ritual of the calling of the Engineer’ takes place (also known as Kipling). Before going to the Kipling Ceremony, which was held at Liuna Station, the ceremonial pranks are performed. One of my thesis team members was up bright and early March 31st and went around campus, armed with his digital camera. He has a great post on his blog giving more detail about Kipling and showing some of the pranks from this past year.

k-means and EM clustering algorithms

Sunday, April 16th, 2006

The final data mining assignment (which was due in the middle of exams) was to implement the k-means and EM algorithms in C. These are two pretty simple clustering algorithms, with k-means (or renditions of k-means) used in industry all the time. Both algorithms work in 2-dimensions and take an input file of data points separated by a space.

K-means works as follow:

  • Place K points into the space represented by the objects that are being clustered. These points represent initial group centroids.
  • Assign each object to the group that has the closest centroid.
  • When all objects have been assigned, recalculate the positions of the K centroids.
  • Repeat Steps 2 and 3 until the centroids no longer move. This produces a separation of the objects into groups from which the metric to be minimized can be calculated.

      The EM algorithm is a bit more complicated, but has generally the same idea:

      em

      Since this was in the middle of exams, I wrote both solutions (code) in one night (7pm to 3am), so no guarantee whatsoever. Take a look; if you’d change anything let me know. The code is licensed under GPL v2.

    Apriori Online – Mining for Associations

    Wednesday, April 5th, 2006

    Why are associations interesting? For the same reason data mining in general is interesting – you can learn things you would have never thought of. Take Shoppers Drug Mart as an example, don’t quote me on this, but I bet when you buy a bulk of goods (and swipe you Shoppers Optimum Card) some database is registering your personal information (age, sex, location, etc.) and everything you purchased (Tylenol, Kleenex, gum, etc..).

    With high confidence (no Apriori pun indented) I can say that periodically Shoppers Drug Mart mines that data for interesting association, like perhaps:

    - Males between the ages of 25 and 45, between the hours of 7:00pm to 12:00am purchase toilet paper and Mach 3 razors.

    What would Shoppers do? In the evenings they would set up and isle display of expensive toilet paper. At the front of that isle (as the customer is walking to the cashier) they would set up another display of Mach 3 razors…10 packs. They’ll do this because they’ve found associations, which tell them with high confidence; males will purchase these two items together.

    For a data mining project this past semester, one of the deliverables we created was a web based version the Apriori algorithm. The algorithm was initially developed by Agrawal et al (Agrawal 93, Agrawal 94) and is used to find association rules from a dataset. This online version of the Apriori algorithm is based off an implementation by Christian Borgelt’s.

    The URL is http://apriori.sematopia.com. Aside from simply executing the Apriori implementation by Christian, the web-based application does a series of pre-processing on the data. To begin, all missing values in a given numeric column are filled in with the average of that attribute. Then categorization occurs on all numeric attributes to place each column value in a bin. This is based off of the Category Granularity (how many categories to make in a given column) and the Categorization Threshold (if the number of unique values in the column are < this number, then categorization will not be performed). There are many options (besides Category Granularity & Categorization Threshold) available that can be set to adjust the results Apriori returns; these include the max/min support, the min confidence, min sets per rules, etc.

    The file uploaded must be in CSV format with the first row as headings, and each subsequent row being observations. The max file size that can be uploaded is 200,000 bytes. After the algorithm finishes (which should take less than 3 seconds) the first 100 association rules will be shown. You can download the full output from the website.

    The associations produced will look like this:

    verbal_sat=c3_g7(442,469) <- math_sat=c2_g7(500,530) act=c4_g6(21,23) (36.1, 93.0)

    c3 means column 3
    g7(442,469) means group (bin) 7 were this specific bin was between 442 and 469
    (36.1, 93.0) at the end of each rule, the support and confidence is given

    Each IP address will be allowed to run 5 datasets per day.
    Good luck, happy mining.
    http://apriori.sematopia.com

    Thesis Design Project: Robot Pictures

    Tuesday, March 28th, 2006

    A colleague and I took a few final photos of our robot today.
    You can read more about our final product here.

    Update: Proof of Concept 3 pictures can be seen here.
    Update: Proof of Concept 2 pictures can be seen here.
    Update: Read about the final product here.
    Update: Videos of the robot can be seen here.

    Robot Pic1Robot Pic2Robot Pic3Robot Pic4Robot Pic5

    Thesis Design Project: Done

    Wednesday, March 22nd, 2006

    This past Sunday was the final competition to the IBM judges for my team’s thesis design project. The project consisted of making an autonomous robot (out of Lego) that would go into a network, and rescue hallow eggs.

    There were 2 parts to the project. The first is the graphical user interface, which uses a map of the network to determine execution paths, trasmit/receive with the robot, etc. The second part is designing the actual robot. Both components had a lot of effort put into them, and collectively we are very proud of the final product.

    Our company name was MBI (MicroBot Initiative) and the product name was nexSAR (Next Generation Search and Rescue). Highlights of the finished product?

    • Capable of rescuing 3 eggs in under 25 seconds (using the network provided).
    • Custom designed ’stay straight’ algorithm, which polls light sensors to remain centered in the hallway.
    • Upon exiting the network, the robot uploads its log, and the GUI creates a VRML (3D) log re-enactment. This is complete with victim voices, which get louder as the robot nears.
    • Ubuntu Live CD. Just put the CD in the CD drive, reboot, and all the software you need is ready to go. We have a live CD for both PowerPC and for Intel.
    • USB Rescue Key. Capable of booting to DSL (Damn Small Linux) straight from a USB drive. This also has all the software pre-loaded and ready to go.
    • Complete GUI with map editor and path generation.

    Here are the slides that we used in our final presentation.
    The slides use 3 videos of the Robot in action – Video1Video2Video3 – (sorry 2 of the videos are large ~50mb).

    Update: Final photos of the Robot (taken March 28/06) can be seen here.
    Update: The Robot Java code can be downloaded here (April 4/06).
    Update: The videos above have been uploaded to Google Video, you can see them here (July 2/06).

    Here is a screen shot of the GUI:

    Here is a screen shot of the VRML log re-enactment:

    Design Project: POC 3

    Tuesday, February 7th, 2006

    We’ve come a long way from the last design of our robot. We have a bunch of ideas on the go, and I have some algorithms in the works about keeping the robot centered in the hallway network. We have our third proof of concept Friday. For this, we have to upload a map, make a turn, rescue an egg and exit successfully. Here are some pics of our current design (taken on from my cell phone, so not great resolution).

    poc3_3.jpeg

    poc3_2.jpeg

    poc3_1.jpeg

    Thesis design project: POC 2 Robot Pics

    Wednesday, November 30th, 2005

    Our proof of concept (POC) was today and thankfully everything went OK (see previous post). I had one of my group members take some pictures of the robot before we disassembled it. Though the design below was good for the POC, it’s not what we need for a final design. With that in mind, we took it apart, and headed back to the drawing board.

    Here are some pics of the extractor robot version 0.0002

    Update May 11 2006: To read about the final product go here

    Lego Mindstorms

    RCX Brick

    LeJOS on the RCX

    Lego Mindstorms

    Thesis design project: Proof of Concept 2

    Tuesday, November 29th, 2005

    Our thesis design project this year is to make an autonomous robot (out of Lego Mindstorms) that will go into a maze and rescue black coloured eggs. This is a year long project and the class is split into teams of 5-6 people (my group has 5).

    The robot will be given a text file of the map, before it enters the maze. Once in the maze the goal is simple: Rescue all the victims as fast as possible. The standard Lego Mindstorms software does not apply here. To handle the complex logic and additional constrains we decided to use LeJOS (open source Java OS for the Lego RCX brick).

    Tomorrow is the second “proof of concept” and I just spent a good 6 hours today getting our robot to work. All the robot has to do for tomorrow, is go into the maze (in a straight line) detect the egg and rescue it. Seems simple enough… no. First of all, the egg is hallow and thus extremely light. Unless the egg is going to be tied down (by tape or Palestine) the touch sensor will push the egg without even detecting it. I hear using a light sensor would work better; I’ll try that in the future (or a combination!). The next issue is handling all the threads of execution that get spawned from all the listeners that are set.

    Ah well, it works now, and is good for tomorrow. This project is going to take lots of work. Eventually the robot will have to make turns, clear blockages, work with a map (and without), save multiple eggs, etc. Good times.

    Your Ad Here