Software

Minimum-area Bounding Rectangle
An algorithm to find the minimum-area bounding box around a set of 2D points.
It uses the qhull algorithm to find the convex hull of the points, determines the set of edges between each pair of points, and then iteratively calculates the area of a rectangle based on each of the edges.

Code:  github.com/dbworth/minimum-area-bounding-rectangle

.
Numerical analysis examples
Various numerical methods written in python:
– Solving (ordinary) differential equations (ODEs) for initial value problems and boundary value problems using Runge-Kutta methods
– The Crank Nicolson Finite Difference method for solving partial differential equations (PDEs)
– Numerical integration using trapezoid rule, Romberg’s rule, Simpson’s rule, Gauss-Legendre m-point quadrature and adaptive Gaussian integration
– Finding roots of equations using bisection and Brent’s method

Code: github.com/dbworth/py_numerical_methods

.
Sudoku
A graphical Sudoku puzzle game, written in python.

Code: github.com/dbworth/py_sudoku

.
NXT++
NXT++ is an interface written in C++ that allows the user to control Lego Mindstorms NXT robots directly through a USB or Bluetooth connection.
Originally written by Cory Walker in 2007, I made some additions that allow you to connect multiple NXT bricks via USB and/or Bluetooth.
This is useful because it means you can use more than 3 motors which is great for building big robots!
Or you can write a distributed robotics application in C++ and test it on a swarm of robots connected via Bluetooth.

Code:  github.com/dbworth/nxt-plus-plus

.
RobotC examples
These are some example solutions to typical robotics problems, written in RobotC for Lego Mindstorms NXT:

  • Drive forward in a straight line, using wheel-encoders
  • Gradual motor start, using bell-shaped velocity profile
  • RGB Color Sensor test
  • Using RGB Color Sensor as a Light Sensor
  • State Machine template

Code:  github.com/dbworth/NXT_RobotC_examples

.