CS Updates: Full Speed to Competition

At last, the long awaited CS blog is here! We have wrapped up the semester of pool tests, and are ready for the summer. Here is a look at what CS has been up to for the past 2 months!

Prequalifying

This past March, we prequalified our robot, Oogway, for competition! It was able to navigate down the length of the pool, passing through the gate, and going around the buoy. To do this, we utilized our CV interface and improved task planning methods. You can read more about the pool test at the corresponding pool test blog.

Sonar

Over the past 2 months, our team has been hard at work refining our sonar task planning algorithms. After fixing some additional updated dependency issues for syntax (see this pool test blog), we observed consistent success at identifying the angle of the wall relative to the robot, and rotating to face normal to it. We tried at various distance, and observed success at distance of up to around 6 meters. We are excited to use this functionality at competition as a source of truth when positioning our robot in precise movement tasks.

Yaw and Move to CV Object

This semester, an important project has been to improve our previously inaccurate and slow yaw to CV object algorithm. This allows us to rotate to and face certain game objects on the field. Since the previous update, we have worked out some additional edge case bugs, and are continuing to investigate a small error when the task planning process ends.

In addition, we began development on a “move to CV object” algorithm, which should smoothly move the robot to the underwater object. It should adjust the speed of the robot as the object gets closer. Originally, we wanted to tell the distance of the object using the size of the object in the frame. However, we found this to be unreliable, especially as the object begins touching any of the edges of the frame. We are working to mitigate this issue, but long term solutions may require the use of our existing stereo cameras to determine distance.

Acoustics

In the past two months, we have worked with the acoustics teams to integrate the latest acoustics analysis code into our codebase. After further refinement to the acoustics processing algorithm, we were able to successfully set up a ROS service that called the underlying acoustics code with the data collection and analysis. Task planning can now easily use this new, abstracted service to tell if the acoustics system is ready, as well as if the pinger is likely “nearby” (at torpedoes in our competition planning) or “far away” (at octagon in our competition planning).

Jetson Nano Characterization and YOLO

In the previous CS updates blog, we reported several results of our benchmarking YOLO models on the Jetson Nano. We were happy with the initial results from test scripts, and began working to integrate the code into the ROS codebase. However, installing the required dependencies proved to be a challenge. Our Docker container builds on Python 3.12, while Nvidia wheels for the Jetson Nano are for Python 3.10. We are looking into using a C++ node instead to try and avoid some of the Python dependency issues. Long term, we hope to implement this on Crush, who is lacking our current image model processor camera from DepthAI, as well as our new, upcoming robot.

Crush Eight Thrusters

Over the past few pool tests, we have finally gotten Crush into the water for the first time this semester (yay!). After some initial configuration file issues with the thruster mappings, we proceeded to begin tuning static power (power required to keep the robot underwater and stable) and PID. With the two pool tests we had, we were able to tune static power, and began initial testing of movement. However, this is all that we could get to with the limited time.

State Investigations

Recently, we noticed that Oogway struggles to move in a straight line, instead, it yaws counter-clockwise and drifts left. Therefore, over the past two months, we began working with various vendors of sensors on our robot to debug and recalibrate. We found some success by adjusting the parameters on our DVL, and also did investigations on what sensors are being used to calculate which portions of our state. We will continue monitoring and adjusting as necessary

Final Takeaways

Unfortunately, other projects not mentioned here never found test time during the school year. However, we are beginning summer pool testing (stay tuned for updates on that!) before competition.

This semester has been a busy one, with many projects big and small in the pipeline. We got a lot done before competition, but there is still work to be done before July. Thank you for reading, and with that, signing off for CS Update blogs one last time!