S24 - Software

  • Platform for running controller, algorithms, and sensors

    • Previously used Intel NUC to run all ROS nodes, but too slow for CV algorithms (including YOLOv8 model).
    • Jetson Orin Nano migration - GPU for processing YOLOv8 workloads.
      • Required development version of Jetson OS and ARM-compatible software dependencies.
  • OAK-D integration - stereo camera for depth perception as well as higher resolution RGB sensor

    • Integration with software stack - difficult to publish images wirelessly to operator remote controlling the sub.
      • Only transmitted RBG data using Best Effort to maintain high frame rate.
  • Position Controller - operates as a layer on top of existing velocity controller

    • Error calculation and PID control:
      • Calculates error between current position and target position in the world coordinate frame.
      • Runs PID calculations to generate a command velocity.
      • Position determined by pulling odometry information from the localization node.
    • Coordinate frame conversion:
      • The position controller generates velocity commands in the world coordinate frame, which must be converted to body coordinate frame for the velocity controller to use (e.g., forward 1 m/s is always in the positive-x direction in the body frame).
      • The conversion uses quaternion math (via numpy library) to accurately translate velocities and orientations between the two frames.
      • The velocity controller uses roll-pitch-yaw (Euler angles) internally.
  • Path Following

    • A path follower node accepts a PoseArray containing waypoints which is fed in order to the position controller node.
    • The path follower node monitors feedback from position controller (i.e., when the sub is within a certain threshold from the target) to determine when to transition to the next waypoint.
    • This node doesn’t rely on odometry since that is handled by the position controller.
  • Future work

    • Obstacle Perception
      • Using the OAK-D’s pointcloud simplifies obstacle perception, but it generates too many points (hundreds of thousands per image), making processing and transmission impractical.
      • We intend to send images to the mini-PC in lower resolution, reducing the pointcloud size.
      • This approach will enable detection of both object depth and color efficiently.
    • Controllers
      • Testing the position controller in real-world conditions was hindered by unresolved issues with the IMU and localization during water tests.
      • Tuning of PID constants is necessary for the controllers.
      • Currently, the controllers do not account for physical turn radius limits, potentially causing the submarine to receive commands it cannot execute.
      • Solutions include generating paths, such as Dubins curves, that respect these physical constraints to ensure feasible navigation.