IF THIS IS THE WRONG PLACE TO PUT THIS, PLEASE DON’T DELETE, I’LL MOVE IT
The goal is to design a more robust firmware solution given the new electrical re-design and somewhat shaky state of the old firmware. The ultimate goal is to strive towards Product Line Architecture (PLA).
Outcomes
- [ ] Complete New Firmware for Electrical Re-design
- [ ] Sensing Board
- [ ] Presto Board
- [ ] Torpedo (see below)
- [ ] Foundational Codebase (make libraries for customizable firmware [PLA])
- [ ] Explore the the usage of Programmable IO (PIO) on the Pi Pico
- [ ] Write scripts for the I2C interfaces (has 4 listed, which is more than Pi Pico allows)
- [ ] Write scripts for the status light and NeoPixel (can run despite E-Stop)
- [ ] Explore using the Rx FIFO for debugging purposes
- [ ] Using second Pi Pico as a debugger using picoprobe or debugprobe (available on GitHub)
- [ ] Autonomous Torpedo Firmware
- [ ] Design a good efficient embedded controller for the Raspberry Pi Zero 2W
- [ ] Design efficient OpenCV models to recognize targets in the water
- [ ] Need to actually test the OpenCV on the Pi Zero 2W
- [ ] Protobuf and ROS Publisher/Subscriber Interface
- [ ] Figure out how to send data structures like structs
Requirements
Good vibes, idk this is just a notes dump for future use
Documentation
PIODemo.MOV
First test demo of PIO is below. As you can see, the regular E-Stop interrupt stops the main CPU, but passive things like status lights are unaffected despite being responsive to the main motor controller (the blink speed correlates to motor speed), as they have their own E-stop
PIODemo.MOV
After the refactoring the code into the modular architecture, the code still works exactly the same
PIOStarter Demo.MOV