kectr.tech
Autonomous Underwater Vehicle (AUV) Microcontroller System with Control Algorithm
Back to Projects

Autonomous Underwater Vehicle (AUV) Microcontroller System with Control Algorithm

In this project, I and my software team developed a microcontroller algorithm that will be used in an AUV.

Key Features

The system has following key features:

  • I2C communication with IMU (MPU6050)
    • The sensor system uses DMP to acquire a quaternion value for a control algorithm.
    • Has calibrating sequence for bad IMU positioning.
    • Uses internal DLPF for noise immunity.
  • ROS Serial Communication
    • The system uses Ros Serial to communicate with the master computer.
    • The publishing and subscribing to nodes are done according to message types that are specified in auv_ros package that is also written by me and software team.
  • Motor Control Algorithm
    • The algorithm takes motor positions (The vehicle has 6 DoF with 6 individual motors) and center of mass as input.
    • Then uses Eigen3 matrix implementations for solving inverse of system defined with motors and center of mass.
  • PID Algorithm
    • The classical PID algorithm is used for three different angular axis.
  • Intermittent Operations for short inop
    • It turns out there is a name for this algorithm (Anti-RTOS). When we developed it we did not have any clue it exists as rest of the project.
    • It operates delay functions without cutting the main loop and is mainly used for torpedo firing capabilities of the AUV.
    • Key feature that the library we wrote has is it can chain multiple functions together to make intermittent operations

Some Comments

As a reminder this project was the first real software experiment that we had. All of the development was done within a year.

Interestingly all of the implementation is done without AI since it was not advanced enough in our opinion for this project at this moment (2023-2024).

In addition the libraries and the math behind the code is done by us but after examining existing resources, we realized that control algorithms and intermittent operations were already handled in this way too.,

The code will be open sourced after some tidy up.

Tech Stack

FinishedEmbedded C++ROS1ESP32ControlEigen3 for Arduino

Context

AUV control system software developed with ESP32. Implemented PID algorithms used ROS1 for communication.