Quick Diagnostic Matrices

⚙️ Motor Issues

SymptomQuick Fix
No motors moveCheck 12V DC cable from battery to motor board
Permission deniedsudo chmod 666 /dev/ttyACM0
Motor count mismatchRun find_port.py and update script
Single unresponsiveRe-configure ID with Bambot
Arm jerks / wrong dirVerify IDs match the motor map
Grinding noiseInspect servo horn alignment; replace if stripped

👁️ Camera Issues

SymptomQuick Fix
Camera not detectedls /dev/video* to check path
Black frameCheck lens cap; test with cv2.VideoCapture
YOLO not trackingVerify camera index in script

💻 Software Issues

SymptomQuick Fix
Import errorspip install -e . in repository root
Files not foundCheck /model, /robots, /example folders
Joy-Con not pairingsudo apt install joycond, enable Bluetooth

🔧 Assembly Issues

SymptomQuick Fix
Arm wobbles/playTighten servo horn screws; check bracket fit
Wheels not straightAdjust z-axis scale in slicer or use printed washers
Cart tips reachingMove battery to lowest shelf to lower CoG

Deep Dive: Camera Not Detected

Hardware / USB

Symptoms

  • ls /dev/video* shows no entries or fewer cameras than expected.
  • cv2.VideoCapture() returns False for ret.
  • YOLO tracking script errors with “no camera found”.
  • Camera LED is off even though it’s plugged in.

Likely Causes

  • USB cable not seated: Loose connection or damaged cable.
  • USB hub not powered: Hub can’t supply enough current for multiple cameras.
  • Wrong device index: Camera is at a different path than the script expects.
  • Kernel driver issue: Camera module not loaded (rare on Ubuntu).

Diagnostic & Fix Steps

1. Check Physical Connection: Unplug and replug the camera. Try a different USB port. Try without the USB hub (direct to PC) to isolate the issue.

2. Check USB Power: If using a USB hub, make sure it’s powered. Low-power hubs may not supply enough current for multiple cameras.

3. Check Device Detection: You should see even-numbered entries (/dev/video0, /dev/video2) — one per camera.

List Video Devices
$ ls /dev/video*

# To see detailed device paths:
$ v4l2-ctl --list-devices

4. Test the Camera Directly: Use a one-line Python test to verify the OpenCV pipeline.

Quick Camera Feed Test
$ python -c "import cv2; cap = cv2.VideoCapture(0); ret, frame = cap.read(); print('OK' if ret else 'FAIL'); cap.release()"

Verification Checklist

  • ls /dev/video* shows the expected number of devices.
  • The Python camera test returns OK.
  • YOLO or teleoperation scripts run without camera errors.

Prevention Tips

  • Use a powered USB hub for multiple cameras.
  • Always use the same USB ports—paths change when swapped.
  • Label USB cables to avoid confusion during setup.