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.
- Integration with software stack - difficult to publish images wirelessly to operator remote controlling the sub.
-
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.
- Error calculation and PID control:
-
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.
- Obstacle Perception