When I joined Professor Nickolas Gravish's lab, I was tasked with "increasing the bandwidth" of their current virtual five-bar legged locomotion robot testbed. While I had never personally worked on the software and communication side of robotics before, I had a strong understanding of control fundamentals from my Signals and Systems class, plus a working understanding of electrical and communication systems from my work at Yonder Dynamics. Thus, when I saw the lab had previously been running all communication through a USB hub plugged directly into a laptop, I suggested we switch so something more robust, a CAN bus network.
I built the CAN bus network using a "classic" Raspberry Pi SSH setup with Linux Ubuntu. I wired, soldered, and configured these ancient ODrive v3.6 controllers, hooked them up to our Quantum MT5208 motors, and added absolute encoders for feedback.
Once I got the hardware physically set up, I worked through diagnosing driver conflicts and updated our old testbed Jupyter code. Realizing that a LOT of our hardware was pretty outdated, I proposed we upgrade to ODrive S1 controllers and buy a new Waveshare CAN HAT to limit communication bottlenecks and increase the modularity of our system.
Raspberry Pi · CAN Bus · ODrive · Embedded Systems · Soldering · Python · Linux