- IMU ISM330DHCX
- ENCODERS MA702 (x2)
- TEENSY 4.1 Arduino C++
- MOTOR DRIVERS Odrive S1 (x2)
- MOTORS ODrive D5312s 330KV (x2)
- JETSON ORIN NANO Ubuntu Linux
- TOF SENSORS VL53L4CX (x2)
- RGBD CAMERA OAK-D Pro W
IMU — ISM330DHCX
I’m using an Adafruit breakout for this IMU, which I’m told is quite capable given its price. It’s a six-axis inertial sensor (3-axis gyroscope + 3-axis accelerometer) mounted near the wheel axis in the center of the chassis. The Teensy reads it over SPI at the balance-loop rate, providing guidance for the controller.
TOF Sensors — VL53L4CX (×2)
These are also Adafruit breakouts. They don’t do much heavy lifting; they’re there as an attempt to prevent Calvin from running into things if his vision system doesn’t do the trick. Connected to the Teensy over I²C, they’re used as a coarse safety stop independent of the camera pipeline. They are only read by Instinctus, so they should provide a reliable final layer of crash prevention.
Teensy 4.1
This is the ARM Cortex-M7 microcontroller running the real-time Instinctus firmware. It owns the balance and motor-control loops, talks directly to the IMU and TOF sensors, commands the ODrive motor controllers over CAN, and exchanges higher-level setpoints and telemetry with the Jetson over serial.
Motor Drivers — ODrive S1 (×2)
These are high-quality field-oriented BLDC controllers, one per wheel, that power the motors. They consume CAN messages from the Teensy, drive the motors directly, and read the magnetic wheel encoders over RS-485 for closed-loop feedback. Most of the heavy lifting for motor control happens here.
Motors — ODrive D5312s 330 KV (×2)
These 330KV brushless outrunner motors from ODrive should provide the needed torque. To be honest, I didn’t spend a lot of time analyzing the decision before buying them — just a little back-of-the-envelope math. Fingers crossed that they work. They’ll drive the wheels through GT2 belts at a 4:1 reduction ratio.
Encoders — MA702 (×2)
ODrive also sells these 14-bit magnetic angular position sensors. They mount behind the motor and read a diametric magnet attached to the motor shaft.
Jetson Orin Nano
I’m using a Jetson Orin Nano running Ubuntu Linux to run the Cogitator Python code. Initially, this will probably be overkill. Hopefully, I’ll be able to give it more of a workout as the project expands.
RGBD Camera — OAK-D Pro W
Connected to the Jetson over USB, the wide angle OAK-D Pro W provides basic computer vision capabilities and the ability to offload some of the CV number crunching. It’s there to help with SLAM, object detection, and state estimation.