Below are some examples of my work.
This Industrial IOT / Autonomous Robot application demonstrates the technologies associated with autonomous/connected robots or Industrial IOT devices. One component of this is secure and reliable connectivity to the cloud for data collection, monitoring, analysis and control. Essential elements are client authentication, cloud storage, web dashboard/UI and scaleable architecture. The demo, based on GE’s Predix “best practices” applies Predix Cloud Foundry, UAA, REST, Node.js/Express for the cloud application environment, with MQTT, websocket, OSGI and BCM2836 (RaspberryPi) as the edge/robot device. A set of Linux scripts (git, npm) automate the build/deploy process. The system captures light, temperature and sound from an oil-fired burner for presentation on a web dashboard.
This mobile application (developed in Android Studio) investigates meeting rescheduling as an early indicator of employee disengagement in the workplace.
Machine Learning is an automated process that captures the relationship between independent (attribute) and target (class) variables. The result is a model that can be applied for prediction and analysis. Many ML techniques exist and each is more (or less) suited for particular applications and data sets. The following papers investigate common ML techniques and their characteristics.
- Summary Comparison
- Rule-based Learning
- Genetic Algorithms
- Instance-based Learning
- Bayesian Networks
- Neural Networks
- Decision Trees
- Preprocessing and Attribute Selection
Probabilistic Graphical Models are a means to represent information and structure in the face of uncertainty. Stanford University researcher Dr. Daphne Koller and Google/Baidu architect Andrew Ng are leaders in the field and provided a thorough introduction on Coursera.
The OpenCV machine vision library is a resource that is rich, deep and broad. It includes vision-specific core elements but also more broadly applicable algorithms such as machine learning and makes these available with Java, C++ and Python interfaces. In this project we start with the Calib3c library to show how a pinhole camera model can be applied to the task of identifying a Backgammon board, arbitrarily positioned and seen in perspective.
Spoken language is increasingly being used as the primary user interface for devices in both consumer and industrial settings. The challenges of limited vocabulary, noise susceptibility, high computational cost, and speaker-specific training are being overcome. In this paper we investigate approaches for learning dialect in a speech-based command-and-control interface.
This study investigates features in the Linux kernel that reduce variability in interrupt latency which can allow multitasking in even intensive realtime applications. Specifically, the paper details the CCONFIG_PREEMPT optimization and the PREEMPT_RT patch.