Steve's Portfolio of Projects and Code

This is a laundry list of various project and code I'm involved with in my dissertation.

It's intended mainly as a reference for me, so I can reuse code on other projects…

If you see something here you think you can use, email me at henderso [at-sign] cs [the-dot] columbia [another-dot] edu

Android Development (General)

  • LANGUAGE: Java (Android SDK)
  • CATEGORY: Mobile applications

I've done quite a bit of android programming (2D) in my thesis.

Android development

Android GUI Programming

Android Server

This is a C++ (VS2005) application I wrote to link an android 2D GUI application with the ARMAR Message server. It uses TCP/IP sockets.

AndroidServer

ARMAR

This is my main effort. Includes 10000+ lines of C++ code for my main AR application. Also includes a plethora of models and textures. This code touches on many other projects including ARMAR and Opportunistic Controls.

farm4.static.flickr.com_3400_3590212807_db577ed768.jpgfarm4.static.flickr.com_3391_3454899680_3d58061d13.jpg

ARMARController

  • LANGUAGE: Java (Android SDK)
  • CATEGORY: Mobile applications
  • CODE: Subversion repository (login required)

This is a 2D GUI I made to control the ARMAR application with the android.

Android Controller

Android Controller

ARMARDisplayController

  • LANGUAGE: Java and C++
  • CATEGORY: Client/Server, Valve, ARMAR
  • CODE: Subversion repository (login required)

This was a Java application (used as a GUI) and JNI backend (used as TCP/IP client) that is used to adjust the cropping and positioning of the video backbuffer in the Valve code.

It communicates with the ARMARMessageServer to allow the user to adjust the video backbuffer, a requirement to get the FOV of the video to match the display.

There are two parts of the ARMARDisplayController.. ARMARDisplayControllerClient and ARMARJavaClient.

The control flow looks like this:

ARMARDisplayControllerClient(java)===jni=⇒ARMARJavaClient(C++)===named_pipe==⇒ARMARMassageServer==⇒named_pipe==⇒ValveHook

This was really test code, as the current control strategy uses Valve key bindings to do the same thing.

ARMARDisplayControllerClient

ARMARMessageServer

The venerable server that holds ARMAR together. TCP/IP socket model. Passes messages to and from my Valve code and various support code, including:

  • ARMARController (android controller)
  • ARMARDisplayController (a Valve side control to tweak the Valve Hook)
  • ValveHook ARTag to Valve bindings
  • Optitrack streaming data (not used lately)
  • Opportunistic Controls

ARMARMessageServer

ARTag (General)

I've done quite a bit of work using Mark Fialla's ARTag. You can get the SDK by buying Mark's book

farm4.static.flickr.com_3661_3624505095_a0b584ecc6.jpg

Calibration

Spent/Spending a lot of time on calibration of trackers and displays. Here's some of the utilities I've built to help.

Wand Calibration

Calibrating the tip and offset of a tracking wand.

Computer Aided Training (CAT) Script

This class serves as a utility for reading and writing computer aided training (CAT) scripts. The class is specifically designed to support COMS W4170 (which I was TA'ing), User Interface Design, Fall 2008. A CAT script is a collection of CATScriptSteps. A CATScriptStep is a 3-tuples, with each tuple comprised of {image, title, description]. Each CATScriptStep is designed to be an individual step and shows an image of a task, a title for the task, and a paragraph description. Collectively, this set CATScriptSteps forms the overall training script.

I'm specifically adding this to my portfolio because it uses Java Serialization to store objects.

farm4.static.flickr.com_3330_3626715320_96ed97c5cd.jpg

Image Matching

  • CODE: Java
  • CATEGORY: Computer Vision
  • KEYWORDS: Image, matching, Dendrogram, Laplacian
  • CODE: Subversion Repository (login required)

I created this project in COMS W4735. The idea behind this project is to match images based on color, texture (Laplacian) and a hybrid Dendrogram-based clustering algorithm.

farm4.static.flickr.com_3315_3625859259_fea46c4fa2_b.jpg

farm4.static.flickr.com_3317_3626651442_f0545cff6d.jpg

Image Location Analysis

  • CODE: Java
  • CATEGORY: Computer Vision, Natural Language Processing (NLP)
  • KEYWORDS: Image, NLP, language, map
  • CODE: Subversion Repository (login required)

I created this project in COMS W4735. The idea behind this project is to describe (using text about known landmarks) a user's general location based on where the user clicks on map.

Modeling (3D)

I've done a ton of 3D modeling in support of my thesis. Much of this is for official use only and cannot be shared. But I'm adding what I can here.

Maya to Valve Export

This was some MEL script I wrote by modifying Prall's export tool. This allows one to create models in Maya and export them to Valve. This includes the ability to export animation.

The Adobe Flash Plugin is needed to display this content.
The Adobe Flash Plugin is needed to display this content.

Opportunistic Controls Vision Code

This is a C++ image processing library for enabling Opportunistic Controls. Uses appearance-based segmentation and the ARTag Library.

OpporunisticControlsImaging

Opportunistic Controls Data Tool

This is a java tool I wrote to parse data from the original opportunistic controls study. Works with CSV formatted data.

Parallel Football

This was a projects I participated in for COMS W4444.

Problem Description

Parallel Football

Parallel Tracking and Mapping (PTAM)

These are some of my (or others that I've worked on) implementations of Georg Klein's PTAM algorithm.

Linux Implementation

The Adobe Flash Plugin is needed to display this content.
The Adobe Flash Plugin is needed to display this content.
The Adobe Flash Plugin is needed to display this content.

Windows Implementaion

The Adobe Flash Plugin is needed to display this content.

Shortest Path Over Time

  • Language : Java
  • Category : Information Visualization
  • Keywords : Shortest Path, InfoVis, Time
  • Code : Subversion repository (login required)

This was an information visualization project I was involved with for COMS W4444.

Problem Description

farm4.static.flickr.com_3664_3626590160_7e255b58a1.jpg farm4.static.flickr.com_3351_3625772887_ba41204581.jpg

Valve Source Head Tracking

  • LANGUAGE : C++
  • CATEGORY : Tracking
  • WIKI: here

This is some code Ohan and I worked on to control the Valve Source SDK player with a 6 DOF tracker

Visual Computer Lock

This is a computer lock that uses hand gestures to enter a code.

farm4.static.flickr.com_3397_3635306949_273bd4f0e6_o.jpg


Personal Tools