|
|
|
Eigenvector Centrality for Computer Go
The centralities of the empty board locations, and how a move might affect them, can be measured in a variety of ways.
The algebraic connectivity of the graph can be examined before/after a move.
Various centrality metrics such as the Wiener index and eigenvector centrality give a measurement of the strengths of connections of each vertex.
Finally, schemes such as community structure can partition the empty space into regions where there are more connections within regions than between them, indicating, for one example, eyespace potential.
Here I introduce eigenvector connectivity for Go boards.
Starting with the full grid graph, remove any nodes corresponding to either the black stones, white stones, or both, resulting in a graph that represents the empty space, including friendly stones if desired.
The eigenvector corresponding to the largest eigenvalue of the adjacency matrix indicates the points on the board with the most connection value as determined by the edge structure.
|
|
Graph Representations for Computer Go
Other work (Graepel) introduced the Common Fate Graph (CFG) where objects that share the same fate (blocks of connected stones; individual empty points) are represented by labeled vertices, and adjacencies defined as distanceL1=1 are represented by edges.
Each block of stones, and each empty point, is one vertex.
Note that the CFG representation is no different than the Full Graph Representaion until there are two adjacent stones of the same color on the board, with the graph getting smaller as the game progresses.
I introduce a technique which simplifies the representation of the empty points as well as of the occupied points, and which attempts to usefully reduce the size of the state space.
|
|
Forward and Inverse Kinematics with Jacobian for a 5 DOF Leg
Presented here is an analysis of a 5 degree-of-freedom leg which has a three axis hip with two intersecting axes, a one axis knee, and a one axis ankle.
The base frame is not coincident with the first joint, and the end effector frame is not coincident with the final joint.
I derive the forward and inverse kinematics equations, as well as the Jacobian matrix relating joint angle rates with end effector translational and angular velocity.
|
|
Declarative Programming for Distributed Robots in a Stochastic Environment
This research concerns the problem of how to write programs for distributed robots in a stochastic environment.
In particular, assuming that each robot knows the desired state of the system, but not the current state, one question is what next action should it take to reach the desired state.
The technique we investigate is to consider the program as a set of commands that may execute in any order, where the command to execute is chosen randomly from the set.
In addition to the set of commands, each command has two attributes that give the program its desired behavior: a guard and a rate.
The command's guard determines if the command is enabled or disabled in a given state, and it is common for multiple commands to be enabled simultaneously.
The command's rate is the rate of execution of that command when it is enabled.
We start with a program that provably gives the desired result, although perhaps it does so inefficiently, and we can optimize the system to the desired behavior by tuning the command rates.
|
|
Temporal Logic
This was some work done with temporal logic and formal verification. Temporal logic concerns things like something which is not true now, but is guaranteed to become true in the future. It has qualifiers Always and Eventually.
|
|
Robust Control with Feedback Linearization and Spring Dampening
The device under consideration is a spherical robotic manipulator where all three joint axes intersect at a single point, and the joints are cable driven from motors located some distance away.
Control of a three joint robotic manipulator is made difficult by several issues.
The primary issue is that of model uncertainty, and the detrimental effects this has on the feedback linearization.
The second issue is that the cables used to drive the joints cause underdamped and approximately 2Hz oscillations to appear upon any commanded movement.
By including frequency weighted loop shaping filters, we show that we can avoid exciting the frequency band containing the unwanted dynamics.
The resulting controller is of high order, but is then reduced substantially with minor effect on the performance.
There is still the issue of model uncertainty, however, and we further show that by incorporating a normalized coprime factor uncertainty structure to the model, robustness can be improved.
The figure at left shows the command penalty filter.
|
|
Directed Evolution in Synthetic Biology
To improve the performance of an enzyme, we use directed evolution in a turbidostat initially containing a strain of bacteria genetically modified to express the enzyme.
A control loop regulates the volume and turbidity of the population by adding nutrients and removing bacteria.
By keeping the population size constant, growth rate becomes the primary factor in natural selection; mutants that grow the fastest will eventually take over the population.
The nutrient input, i.e. the environment, must be chosen so that the mutants with more effective enzymes grow faster.
The fitness of the enzymes is proportional to the nutrient input rate, just as the fuel input rate of a car using cruise control is related to the slope of the road.
Adding another control loop that keeps fitness constant while changing the composition of the nutrient input can lead to more efficient evolution.
|
|
State Estimation and Parameter Identification of the Rotary Arm Pendulum
This project is to apply and compare techniques for state estimation and parameter identification of the Rotary Arm Pendulum (which I built, thank you very much) used to teach control systems at the UW.
The techniques to be compared are the Unscented Kalman filter and the Extended Kalman filter.
The dynamics of the system are nonlinear and complex enough to warrant study, yet simple enough to have fun with.
The dynamics equations were obtained from the LaGrangian method, where the potential and kinetic energies are specified, and the equations of motion derive from the LaGrange-Euler equation.
It is possible to linearize this system about an equilibrium, but the region of linearity is small, and I would like to have a larger range of operation, hence the desire for a nonlinear analysis.
|
|
Control of a Hovercraft
The goal of this project was to control the heading and speed (i.e. the velocity vector) of a fan-powered vehicle.
The vehicle moves on a flat low-friction surface, and has two high-performance fans mounted on top that both propel it forward and rotate it.
The vehicle has nonlinear dynamics, contains an onboard computer that controls the fans, and receives sensor data for the velocity vector.
I created two controllers for the vehicle, one using classical root-locus techniques, and the other using full-state feedback with an observer.
|
|
Laser Spacewars
Spacewars is a one-to-four player space combat game I designed and built, and uses a vector-based laser display, which means that a laser beam races around the frame to draw all the shapes with lines point to point, rather than scanning rasters and drawing pixels.
It can be projected onto an outside wall of a building, indoor ceiling, etc.
Each player gets a ship, and flies around trying to kill the other players using thrust, fire, warp, and hyperspace.
There's also a Sun to avoid (or hide behind) in the middle of the screen.
The last ship living gets a point, and the game ends at a preset score where the winner enters their initials.
Single-player mode uses robots that have a level of intelligence that varies with the skill of the player.
There is a lot of action and subtle detail in the game, and it's a lot of fun.
The average event installation has generally been filled with players, with more waiting to play.
|
|
Factor Analysis and Model Regression of a Consumer-Oriented Software Project
Thirty-nine experimental source variables were reduced to four factors: code complexity, code changes per time, and two factors for bugginess. These new variables were then used to create a forecasting model using a 2nd degree polynomial plus sinusoid.
|
|
Gravity Simulator
This is a simple planetary gravitational simulator I wrote long ago as shareware. It had a small dedicated group of supporters, and it was fun to get occasional letters (and checks!) in the mail from around the world.
|
|