
Founded and funded by the CIA, In-Q-Tel is a venture capital firm interested in promoting technological development that may benefit the US defense or intelligence communities. IQT Labs is a department within the larger organization that takes a hands-on approach to understanding the private sector and open-source technologies by "trying it themselves."
Microprocessor Programming and Networking
Custom PCB Design
Kalman Filtering
NonHolonomic Control
Autonomous Loitering Platform
IQT tasked my senior design group (myself, Owen Mitchell, Iris Renteria, and Gen Mehra) with building an autonomous, open-source vessel meeting certain functional requirements. They also requested we design and build three iterations, as their main goal was to understand the open-source ecosystem and engineering difficulties encountered, rather than actually use a final product.

Requirements
-
Operate autonomously for at least 6 weeks
-
Maintain C3 (Command, Control, and Communication) via Iridium Satellite network
-
Support a payload 40 lbs, 4 cubic ft, and 40W constant supply
-
Survive rough sea states
-
Only use off-the-shelf parts (purchasable online without a quote)

Responsibilities
I was solely responsible for all low-power electronics and computer design and assembly, as well as all navigation and control software. I also assisted in assembly of V1 and V2, as well as welding the entirety of V3.
​

Design Features - Hardware
My design featured an AT91SAM3X8E 32-bit ARM core running the primary software capabilities for the vehicle. There were also 2 M9N GPS units, connected to independent nRF52840-based microcontrollers, with integrated LSM9DS1 IMUs for redundant pose estimation. The main board also communicated with a RockBLOCK+ for access to the Iridium satellite network and a local radio transceiver for communications when deploying or docking. I also designed the boat with 8 additional sensor hookups, to be integrated as the end user desired.
​
The design ethos, centered around off-the-shelf purchasing, used all components in the Arduino form factor. Any type of multi-threading and redundancy was simply handled by adding another microcontroller and communicating over an I2C or UART connection. IQT loved this approach for its simplicity and intuitive usage, once the communication protocols were established. To streamline the assembly process, I learned how to design custom PCBs, which were primarily just sockets for Arduinos, and had them manufactured.

Design Features - Software
The software contained extensive mode control logic, sensor filtering, navigation and propulsion algorithms, and communication protocols.
​
An extended Kalman filter handled the estimation of vehicle position and orientation from the IMU and GPS. This navigation protocol fed a course-over-ground vector into the control algorithm, which was compared against an intermediate-waypoint target, as determined by the guidance algorithm. This then forwarded an error value into a PI controller with gain scheduling and integral term resets, to help direct the boat in the correct direction.
​
In the communication protocols, all vehicle state values were simplified to standardized 32-byte strings with byte-level encoding. These messages were designed to be consice and not subject to floating-point errors by using fixed-point interpretations. All messages across I2C, UART, and satellite communication lines followed these conventions.
​

Testing and Results
Since we made three iterations, there was not enough time to test on a full 6-week deployment, so representative testing was conducted instead.
​
This included testing my navigation and control software over 1400 miles of road driving, a day-long field test on the water with the sponsor, and weeks of consecutive runtime on a benchtop.
​
In the end, IQT Labs was very happy, and my team was awarded the best senior design project by a panel of ASME judges (and we all got As in the class!)


... Just a bit of senior spring autonomous boat surfing