Skip to main content

๐Ÿ“– Project Story โ€” Lessons Learned

Every great robotics project is as much about learning from mistakes as it is about achieving milestones.
Hereโ€™s the journey of building the LIMO Pro + MyCobot + YOLO system โ€” the challenges, breakthroughs, and key decisions.


๐Ÿš€ How It Startedโ€‹

I began with basic ROS2 knowledge โ€” enough to follow tutorials but not enough to handle a real, complex robot.
The first week was pure ideation:

  • Defined the systemโ€™s end goal: autonomous exploration โ†’ detect โ†’ navigate โ†’ pick โ†’ return โ†’ drop.
  • Drafted the workflow and roadmap.

Lesson: โ€œKnowing the steps is not the same as knowing how to execute them in the real world.โ€


โšก The First Mistake โ€” Workspace Chaosโ€‹

In my eagerness, I made a critical error:
I built my first test node inside the robotโ€™s source workspace and ran colcon build there.

Result?

  • Robotโ€™s configs were overwritten.
  • Core files got corrupted.
  • Required a pre-flashed SD card from the manufacturer to recover.
Never Again

Never build inside the source workspace.
Always use an external colcon workspace for custom development.


๐Ÿ› ๏ธ Restart & Smart Developmentโ€‹

While waiting for the SD card, I studied documentation, planned better, and decided:

  • Keep everything modular โ€” separate packages for detection, navigation, arm, mission control.
  • Never touch outdated or unused robot files โ€” clone fresh from GitHub when needed.
  • Build the system in isolated, tested components.

๐ŸŽฏ Major Milestonesโ€‹

1. Object Detectionโ€‹

  • Switched to YOLOv8 with a custom dataset.
  • Trained the model to detect only relevant objects.
  • Added depth integration and map-frame transforms for precise navigation targeting.

2. Arm Controlโ€‹

  • MyCobotโ€™s USB board was faulty โ€” instead of replacing it, I converted it to Wi-Fi control.
  • Wrote auto-IP detection logic in full_system.launch.py so users donโ€™t need to manually configure IPs.

3. Navigationโ€‹

  • Created robust maps with Cartographer.
  • Automated pose initialization using a fixed AMCL pose in pose_setter.py.
  • Designed waypoints + rotational scans to ensure full area coverage.

4. Mission Managerโ€‹

  • The โ€œbrainโ€ node:
    • Orchestrates all components.
    • Handles interrupts from YOLO detection without breaking Nav2 goals.
    • Integrates voice feedback for key events.

๐Ÿง  Key Decisions & Rationaleโ€‹

DecisionWhy It Mattered
Modular package structurePrevented one node from breaking the whole system.
TimerAction in launch filesEnsured correct startup order, avoiding race conditions.
Voice feedbackAllowed hands-free monitoring during development.
Custom YOLO trainingReduced false positives and increased pick success rate.
Base pose automationRemoved manual localization step, speeding up deployments.

๐Ÿ“Œ What I Learnedโ€‹

Top Lessons
  • Donโ€™t rush โ€” build, test, and integrate one module at a time.
  • Always back up working configurations before making big changes.
  • Hardware issues are as important as software โ€” solve them creatively.
  • Clear system architecture from day one saves months later.

Project TimelineProject Timeline