Hardware Issues
Motors Not Spinning
Motor driver IBT-2 not responding
Motor driver IBT-2 not responding
Symptoms: Motors don’t spin, no soundPossible Causes:Quick Test:
- Power not connected to motor driver
- Enable pins (R_EN, L_EN) not HIGH
- PWM signal not reaching driver
- Motor driver damaged
- Disconnect motors from driver
- Measure voltage at driver output terminals
- Should see voltage changing with PWM
Motors spin but wrong direction
Motors spin but wrong direction
Solutions:
- Swap motor wires (+ and -)
- Or invert direction in code:
Motors stutter or jerk
Motors stutter or jerk
Causes: Insufficient power, loose connectionsSolutions:
- Check battery voltage (should be > 10V for 3S)
- Tighten all power connections
- Add capacitors across motor terminals (100nF)
- Check motor driver heat (may be thermal shutdown)
- Reduce PWM frequency if too high
Encoder Issues
Encoder Count Not Changing
No encoder counts
No encoder counts
Debug Steps:Expected: Values should change when motor rotatesIf no change:
- Check encoder power (5V or 3.3V)
- Verify wiring: A → GPIO 34, B → GPIO 35, GND, VCC
- Test with external encoder (swap to confirm)
- Check if encoder damaged (resistance between pins)
Count only increases (or only decreases)
Count only increases (or only decreases)
Cause: Channel B not connected or wrong pinSolutions:
- Verify Channel B wiring
- Confirm pin_b is input-only pin (ESP32: 34-39)
- Swap A and B channels if reversed
Erratic counting / noise
Erratic counting / noise
Solutions:
- Add 0.1µF capacitor across encoder A and B
- Use shielded cable for encoder
- Keep encoder wires away from motor power
- Add pull-up resistors (10kΩ) if needed
- Implement software debouncing:
ESP32 / Embedded Issues
Upload Failed
esptool.py: Serial port not found
esptool.py: Serial port not found
Solutions:
- Windows: Install CP2102 or CH340 USB driver
- macOS:
- Linux: Add user to dialout group
- Check USB cable (must be data cable, not charge-only)
- Try different USB port
Failed to connect to ESP32
Failed to connect to ESP32
Solutions:
- Hold BOOT button while clicking Upload
- Press EN (reset) button, then try upload
- Lower upload speed in platformio.ini:
- Check ESP32 power (LED should be on)
Brownout detector triggered
Brownout detector triggered
Cause: Insufficient power supplySolutions:
- Use external 5V power (not USB)
- Add bulk capacitor (1000µF) near ESP32 VIN
- Don’t draw too much current from 3.3V pin
- Power motors from separate supply
ROS2 Issues
Node Not Starting
Package not found
Package not found
Error:
Package 'mecanum_control' not foundSolutions:- Build package:
- Source workspace:
- Add to ~/.bashrc to auto-source:
Executable not found
Executable not found
Error:
Executable 'motor_controller' not foundSolutions:- Verify entry_points in setup.py:
- Rebuild:
Import error / ModuleNotFoundError
Import error / ModuleNotFoundError
Solutions:
- Add dependency to package.xml:
- Install Python dependencies:
- Use rosdep:
Topic/Communication Issues
No data on topic
No data on topic
Debug:If no data:
- Verify publisher node is running:
ros2 node list - Check topic name (case-sensitive!)
- Verify QoS compatibility
Transform timeout / TF errors
Transform timeout / TF errors
Error:
Could not transform from 'map' to 'base_link'Solutions:- Check TF tree:
- Verify all frames are published
- Check robot_state_publisher is running
- Ensure static transforms are published
Navigation Issues
Robot Won’t Navigate
Nav2 fails to plan path
Nav2 fails to plan path
Robot spins in place / oscillates
Robot spins in place / oscillates
Cause: Controller parameters not tunedSolutions:
Reduce gains in nav2_params.yaml:
Power & Battery Issues
Robot shuts down unexpectedly
Robot shuts down unexpectedly
Causes:
- Battery low voltage cutoff triggered
- Fuse blown
- Loose power connection
- Check battery voltage with multimeter
- 3S LiPo: Minimum 9.0V (3.0V/cell)
- Replace/recharge if < 10V
- Inspect fuse continuity
- Tighten all power connections
- Add LiPo voltage alarm (buzzer at 3.3V/cell)
Motors weak / slow
Motors weak / slow
Cause: Voltage drop under loadSolutions:
- Use fresh/charged battery
- Upgrade to higher capacity battery
- Reduce wire resistance (thicker gauge)
- Check for corrosion on connectors
- Measure voltage at motor driver under load
Quick Diagnostic Checklist
1
Power
- Battery voltage > 10V
- All power LEDs on
- No loose connections
2
Connectivity
- ESP32 serial connected
- ROS2 nodes running:
ros2 node list - Topics publishing:
ros2 topic hz /scan
3
Sensors
- LiDAR spinning and publishing
- Encoders counting
- IMU data valid
4
Control
- Velocity commands received
- Motors responding
- Wheels moving in correct direction