Travers
Biddle

Scroll

Work History

Manhole Inspection Robot

RedZone Robotics

An automated device for inspecting manhole pipes. It consists of a top-side controller + winch and a bottom-side device that gets lowered down a manhole and records video and laser imagery.

I wrote a ROS node that acts as a master control agent for sending commands to other nodes and communicating between the bottom-side and remote control software. It communicates over gRPC and HTTP REST APIs.

The bottom-side device runs on custom firmware written in Golang, re-used from an earlier project I worked on heavily (Wastewater Pipe Inspection Robot). I re-wrote it to handle communication from the top-side and remote control while maintaining backwards compatibility.

Tools: ROS2, GStreamer

Languages: C++17, Golang, CMake, Python3

Mobile OCR

Sphere Identity / Techemy Projects

In a team of two, I created SDK libraries for iOS and Android apps to perform OCR. I wrote the TensorFlow-interaction code in C++ to get the performance benefits of native code and so both mobile platforms could use the same code.

  • Built and used TensorFlow and TFLite to execute neural net models on mobile devices from C++. I modified the build scripts for Android to also build for arm64, x86 and x86_64 architectures on a more recent version of the NDK.
  • Learned iOS and Android development to create libraries that pull raw image data from the device camera and send it to the C++ back-end to perform OCR. I also wrote wrapper code between Swift/Java and C++ to make this possible.
  • Used OpenCV for image filtering and processing, including an algorithm to auto-crop and transform a document from the image background.
  • Wrote a Stroke Width Transform implementation to detect text in an image.
  • Wrote unit tests using Catch2 framework for sensitive functions. Wrote CMake and Meson files to build and run the tests more easily.
  • Learned fundamental Neural Net theory.
  • Proposed the product name - OCRology - and designed the initial logo concept.

Tools: TensorFlow, OpenCV, Android NDK, AWS

Languages: C++14, Swift, Kotlin, CMake

Fisheye Calibration

RedZone Robotics

I started work on an Electron desktop tool for calibrating our device’s cameras, required for measuring the internal diameter with structured light. It used Node Native Add-Ons to call C++ OpenCV libraries. The cameras had fisheye lenses with a 180° field of view, requiring a floor-to-ceiling calibration wall so I modified OpenCV source code to process an arbitrary-sized calibration grid. I submitted a bugfix pull request to OpenCV for a bug that showed itself on my data sets, which was accepted.

Tools: OpenCV, Electron, VueJS

Languages: C++11, Typescript

Wastewater Pipe Inspection Robot

RedZone Robotics

RedZone Robotics produces equipment for measuring the condition and degradation of wastewater pipes and provides analytics on the data collected. Most of my work was involved with a robot that recorded video of pipes.

In a team of three, I developed recording firmware in Golang for a Linux-based measurement recording device. I wrote modules for interfacing with IMU sensors, saving to a new custom file format, converting between old and new formats, responding to user interaction and general improvements to the system architecture.

I designed and implemented the system for providing updates to the device via an ssh connection to a private Apt repository. Updates were installed as Debian packages and systemd could then start the services on boot.

I also designed and wrote half of the Web UI for operating the device. It allowed users to start/stop recording, configure settings, preview a live feed, review previous recordings and transfer data to external storage, all from their phone or tablet via a direct WiFi connection to the device.

I wrote a C++ encoder / decoder for our custom file format.

Tools: VueJS, Arduino

Languages: Golang, Typescript, C++11

Select Projects

Manhole Inspection Robot

RedZone Robotics

Mobile OCR Library

Sphere Identity / Techemy Projects

Fisheye Calibration Software

RedZone Robotics

Wastewater Pipe Inspection Robot

RedZone Robotics

Technology / Tools

Education

Massey University

Master of Engineering

My thesis was "Simplified Computer-Aided Design". I wrote a Computer-Aided Design program with the goal of making it easier for non-technical users to customise 3D designs for 3D printing. It wasn’t very good - I’ve learned a lot since then.

Bachelor of Engineering (Hons)

Contact


This website was built with Typescript, WebGL, Rust, WebAssembly and Webpack
View source on Github