SOFTWARE TEAM

The software subteam was created in 2015 during the team’s switch from ROV to AUV competitions. Due to the additional complexity of controlling an autonomous vehicle, the then Electrical team split, and the Software team was formed. The team is still running the same core software stack from that time called Riptide Software, named after the team’s first AUV.

About the Subteam

The Software Team is at the heart of our organization, responsible for developing and managing all the code that powers our vehicle. This includes the essential software for vehicle operation and the tools that support testing and validation. Joining the Software Team provides hands-on programming experience with real-time robotic systems. Whether you’re interested in machine vision, control theory, or systems design, you’ll find a project that suits your interests here.

All of our code is open source and available on our GitHub Organization. Our members also contribute to external open-source projects, providing fixes and improvements to benefit the wider community.

Discover more about our software stack and the exciting projects we worked on this year below!

Software Team with Robot

Riptide Software

Riptide Software is our custom software stack designed for our vehicle, built on top of the Robot Operating System 2 (ROS2). This year, we are running ROS2 Humble, with our software developed in both C++ and Python.

Riptide Software is divided into several modular units to handle the various tasks required by our vehicle. These units include Riptide Core, Riptide Control, Riptide Perception, and Riptide Autonomy. Each unit relies only on the preceding units, facilitating easier testing and integration of the software components. Additionally, Riptide Software is version-controlled through Riptide Release for each test, allowing for straightforward rollbacks to previous configurations.

Riptide Core contains all essential packages required for the vehicle’s operation, including configuration data and drivers to interact with its sensors and electronics. It provides the framework for the vehicle to understand its sensor and actuator locations, ensuring accurate and reliable performance.

The vehicle integrates a VectorNav VN-100 IMU, a BlueRobotics Bar30 Depth Sensor, and a Nortek DVL1000 – 300m Doppler Velocity Logger. These sensors deliver absolute orientation, depth, and approximate X/Y position data. This information is processed by an Extended Kalman Filter (EKF), configured by Riptide Core, to estimate the vehicle’s location in the water .

Riptide Core equips the vehicle with tools for self-awareness, precise positioning, and an interface to control its thrusters and other actuators, ensuring efficient and effective underwater operations .

View the Riptide Core Repository

Render of Talos with Software Frames Labeled

Riptide Control encompasses the essential packages required for the precise and efficient operation of the vehicle’s thrusters, enabling accurate maneuvering and remote driving capabilities. The system is designed with modularity and robustness, ensuring optimal performance under various conditions.

The vehicle employs a sophisticated hybrid control system combining Proportional-Integral-Derivative (PID) and Sliding Mode Control (SMC). This hybrid approach enhances steady-state stability, travel speed, and tunability. The feedforward control component integrates buoyancy and weight parameters to counteract static forces, minimizing the need for extensive manual tuning​.

The controller architecture features individual velocity and positional PID controllers for each angular and linear axis. These controllers are decoupled from the thruster solver, allowing for compatibility with different thruster configurations across multiple vehicles, such as Puddles and Talos. This modularity ensures the same controller can output a body force suitable for various thruster arrangements​.

The thruster solver translates the body force into specific commands for each thruster, considering their individual locations and characteristics. This solver uses detailed configuration data from Riptide Core to ensure precise control. The firmware-level closed-loop control on each thruster uses RPM feedback from the Electronic Speed Controllers (ESCs) and a PI technique to maintain thruster velocity within tight tolerances, enhancing overall system stability and performance​.

These commands are then relayed to the vehicle’s electronics system, driving the thrusters with high accuracy and responsiveness, enabling complex maneuvers and robust operation in various aquatic environments​.

View the Riptide Control Repository

 

Riptide Perception consists of packages related to vision-based object detection and mapping of detected objects into the vehicle’s internal map for navigation and alignment purposes.

The vision system employs a custom-designed wrapper around the Stereolabs ZED SDK, utilizing YOLOv8 for object detection and segmentation. The system further leverages OpenCV’s Good Features to Track (GFTT) algorithm to identify 2D feature points within the bounding boxes, ensuring they lie on the detected objects through segmentation masks. These points are then mapped to the depth data from the ZED 2i camera to create accurate 3D points. Singular Value Decomposition (SVD) is applied to fit a plane and determine the object’s orientation.

This relative positional data is forwarded to the mapping system, which updates the internal map based on detection confidence and previous estimates. The mapping system uses sample averaging and combined standard deviation to accurately estimate object position and confidence. This updated information is made available to the vehicle’s internal map, relying heavily on the tf2 library in ROS to maintain relationships between objects within the map.

View the Riptide Perception Repository

 

Riptide Autonomy contains the highest-level competition task code for the vehicle. The team uses a behaviortree-based autonomy system, featuring the BehaviorTree.CPP library, and uses its fork of Groot to edit its behavior trees. Inside of Riptide Autonomy is:

    • All actions, conditions, and decorators used in the behavior trees
    • All behavior trees used on the robot
    • An action server to run the behavior trees
    • An assistant to streamline maintainance on the system
    • Utilties for testing the health of the system

View the Riptide Autonomy Repisotry

Example BehaviorTree of Torpedoes Charging

RVIZ Plugins

One of the most important tools during testing is an interface that exposes various controls for the system. This year, the team developed several new plugins for RVIZ, a ROS visualization tool used for monitoring the internal map of the system, to streamline operations:

  • Parameter Panel: Easily change ROS parameters at runtime.
  • Feed-Forward Panel: Apply a wrench to the AUV to counteract natural forces.
  • Mapping Panel: Inspect and configure the mapping system, calibrate map frames using custom AprilTags, and control ZED SVO recordings.
  • Electrical Panel: Perform basic firmware integration tasks like power cycling the IMU.

These tools have significantly reduced configuration time, enhancing the efficiency of testing and debugging by providing a user-friendly control interface.

Simulator Project

Testing underwater vehicles poses significant logistical challenges, making it difficult to secure adequate pool time for debugging and validating new features. To address this, our team has developed a fully custom simulator tailored for our Autonomous Underwater Vehicle (AUV) needs.

The Riptide Simulator integrates seamlessly with the ROS2 network, providing a maintainable and accurate testing environment. At its core is an advanced algorithm based on a fourth-order Runge-Kutta solver, which uses the robot’s current state, physical properties, and thruster outputs to predict future states in real-time. These predicted states are translated into corresponding sensor data and fed back into the AUV’s software stack. This setup includes artificially introduced sensor noise and thruster output delays, ensuring the simulation environment closely mirrors real-world conditions.

A significant enhancement this year is the introduction of a visual simulation using the OpenGL framework. This feature creates a digital twin of the Woollett Aquatics Center pool, the venue for the 2024 competition, complete with realistic caustics, reflections, and water surface waves. This visual simulation enables the validation of the AUV’s pose estimation and object detection systems in a virtual competition environment.

View our Riptide Simulator Repository

Become a member!

Please fill out our membership form to be added to our team email list.

Interested in software team? Reach out to Brach Knutson: knutson.39@osu.edu

The Ohio State University Underwater Robotics Team

Dreese Laboratory
2015 Neil Ave.
Room 457
Columbus, OH, 43210, USA
osu.uwrt@gmail.com

 

Ohio State Underwater Robotics Team Logo