j authored by Jeffrey Fisher's avatar Jeffrey Fisher
# 2023-2024 Software Plans
[[_TOC_]]
# Plans
For full list see: <https://docs.google.com/document/d/1s0sDtHoR3hS5YSwScoyCNJKBdj90xRYl0RJrGwLae8E/edit#heading=h.qy1hck8nxlev>
I will try to have all software projects listed here.
## Qubo
# Brainstorming Qubo
## Decide on past competition tasks that we want to focus on, and what we need in order to accomplish them
Probably should be a shared discussion once Fall starts, especially with the small size of the current summer software team.
Make sure to pick tasks that are likely to show up in future competitions.
Jeff: I looked through each year backwards until 2019. The tasks seem to be basically the same each year, so we don't need wildly different capabilities.
## Port simulation to newer platform
Right now there is progress (but somewhat stuck) on ROS 2 with a newer version of Gazebo, and base Gazebo without some big library like uuv_simulator.
### Wants
- Simulate Qubo and environments similar to prequal / past competitions
- Feature that allows it to at least be somewhat usable on slower machines
- ? Recording results to video
- Theoretically simulation can run at a fraction of realtime and still produce same result as Qubo needs to be fully autonomous.
## RoboSub: Torpedo task
## Dejankify competition code
- Setup testing suite
- Document how to run everything
- Make sure have launch files and whatnot, no more opening 9 terminals
- Automate configuration of Jetson
- systemd unit should be in the repository but deployed via a script of some kind
## Mapping and localization, maybe SLAM
## Control interface, likely a GUI
rqt looks super convenient for making GUIs for ROS.
Also RViz, which Ohio State seems to use for their GUI.
- Make it easy to test individual components.
- Run an individual thruster
- Multiple control interfaces would be nice. Sometimes it might be nice to be able to program (in the lay sense) a sequence like "run at this speed for this time", or even advanced versions like "run based on this curve/function". But also may want to be able to make the controller joystick only control a single thruster. Or have keyboard shortcuts to increase speed & start / stop.
- Fire a torpedo
- Open & close the claw
- Testing sequences
- Simple table testing sequence that runs through, actuating everything a bit to make sure they're all functioning. E.g. runs each thruster at an air-safe speed for a second or so, opens & closes claw, ...
- Won't include Torpeod or anything else non-renewable, but it should still be easy to test those things.
- Teleop
- Safety features, whether they're in the GUI or the main source
- Maybe separate thruster speed limits for air and water.
- Telemetry for autonomous runs
- Easily switch between teleop and autonomy
- Easily run specific autonomy goals
- E.g. once we get past the gate we should be able to re-test portions of the run that happen after the gate, without having to go through the entire run with all the tasks/obstacles each time.
## Logging
- Telemetry for autonomous & teleop runs
- Log as much as possible so we can debug things that happen. Both for untethered and tethered runs, though realisitcally we will be doing a ton of tethered runs with potentially extra layers of telemetry compared to the few untethered competition runs.
# Brainstorming Testudog
## Expanding to additional competitions.
There are some competitions that can be entered software-only, like the Virtual version of RobotX.
The [MATE](https://materovcompetition.org/) competition was recommended to us for Qubo.
## Expand to ROV and non-competition use cases
Exploring / mapping underwater areas.