Masters of Information and Computer Engineering
First class honours
University of Cambridge
2017 - 2021
In the final two years, I focused my studies on topics relevant to robotics. Notable modules were:
- General robotics
- Mobile robotics
- An optimisation based approach to control
- Robust and nonlinear control
- Deep learning
- Computer vision
- Computer architecture
- Statistical signal processing
Alongside this, my final year project focused on the kinematics of serial and parallel robotcs, comparing standard methods to conformal geometric algebra. This was demonstrated by using it to control real and simulated robotics with ROS.
Robotics module 1
Robotics module 2
Final year project
Robotics Software Engineer
C++, Python, ROS, Docker
Theia Robotics
2023 May - Onwards
Primary software engineer at a pre-seed startup, building a "virtual guide-dog": a wearable/hand-held autonomous navigation device that helps visually impaired users navigate outdoors using a cmg-based haptic interface.
- Developed the ROS stack for outdoor navigation:
- System could guide blindfolded users outdoors through pre-set waypoints while avoiding obstacles
- Brought the product to a point suitable for user testing and showing off to investors
- Developed custom nodes for fused GPS/visual-odometry localisation and working with geographic coordinates
- Designed and implemented the control algorithms and system modelling for the cmg interface, including:
- The device firmware (ESP32) with the control algorithm, IMU fusion and sensor/motor interfaces
- ROS nodes for the hardware interface and proprioception (relation between hand-held and wearable parts)
- Integration with Nav2 via a custom controller
- Custom gazebo plugins to simulate the device mechanics and user response
- Researching algorithms to improve system performance and increase value to investors:
- SLAM algorithms that are suitable for long-term mixed indoor/outdoor use
- Monocular depth estimation and monocular SLAM to reduce the reliance on depth cameras and achieve a smaller form factor
Robotics Software Engineer
C++, ROS
NorthStar team at QinetiQ (formerly at TP Group)
2021 July - 2023 April
Developing a full autonomy stack to deploy on existing vehicles, targeted at land and maritime applications.
- Took part in field trials and showed off to
- Led development of the following system components:
- Localisation: Configurable EKF with SLAM integration
- Mapping: 3D octree-based occupancy map with surface normal estimation and down-projection to a 2.5D height map
- Motion Control: Basic motion control for non-holonomic mobile robots
- Made significant contributions to:
- SLAM: Pose-graph SLAM with configurable frontends for lidar, radar or sonar
- Hardware interfaces
- Our custom simulator
Related
Summer Intern
Python, Machine Learning
Frazer Nash Consultancy
August - September 2019
Worked on two python-based projects over a 8 week internship.
- Working on a machine learning project for behavioural analytics. Implemented outlier-detection code using time-series models.
- Developed an internal flask-based webserver, for recording and reporting environmental data for auditing.
Summer Intern
Embedded C, Matlab
Ultra Electronics Precision Control Systems
July - September 2018
10-week summer internship.
- Main project: Developed a program for flashing firmware onto PIC and TI DSPs and verifying success, to be used in production for an aircraft landing gear controller.
- Other work: Contributed to the prototype landing gear firmware.
Robotics framework for control
C++
March 2022 - Ongoing
Working on a custom robotics framework, aimed at the control of arbitrary dynamic robots. Current progress:
- Preliminary system design, for organisation of software components, message passing, configuration and visualisation.
- Libraries set up for rigid body transformations, representation and intersection of geometry.
- Simulation and control of kinematic models, with differential constraints.
Current goals
- Simulation and control of dynamic models
- Implementing standard motion planning and motion control methods
- Investigating model predictive control and other optimisation-based control policies
System design
Kinematics and geometry
Robotics Society Software Lead
ROS, C++, Python
Cambridge University Robotics Society
2019 - 2021
Worked in a small team, building a rescue robot for the robocup competition. I was the main developer working on the ROS stack. This included:
- Manipulator motion control using MoveIt as well as direct velocity control.
- Navigation stack consisting of rgbd-slam, occupancy mapping and path planning.
- Gazebo simulations for both manipulation and navigation.
- Web interface for control and state visualisation
Details
Self-balancing robot
Embedded C
August 2020
Designed and built a self-balancing robot, capable of being manually driven around. Project components:
- 3D printed chassis and a custom PCB with an AtMega328 microcontroller
- Linear controller, including estimation of the tilt bias
- Investigated using system identification and LQR to choose the controller gain matrix
Details