Technical Notes
Writeups on robotics systems, algorithm implementations, and lessons learned while building competition hardware and navigation software. Raw technical notes — no fluff.
How to implement the nav2_core::GlobalPlanner interface in C++, wire into the Nav2 lifecycle, and use Costmap2D for collision checking — from scratch.
Full derivation of the 3WD holonomic inverse kinematics model — from Twist (Vx, Vy, Vθ) to individual wheel speed and steering angle commands.
Practical guide to tuning AMCL particle count, motion model noise parameters, and sensor models for the reflective floor surfaces common in Robocon competition arenas.
Step-by-step configuration of robot_localization's EKF node to fuse wheel odometry and IMU data for a reliable odom→base_link transform under competition conditions.
When to use online SLAM vs lifelong SLAM in competition, and how to serialize/deserialize maps between rounds to save mapping time at the event.
How to calculate radial and axial loads on drivetrain shafts and select the appropriate bearing type, size, and preload for the dynamic loads seen in competition.
Using Nav2's built-in BT framework and BehaviorTree.CPP to sequence autonomous field tasks — navigation, docking, payload handling — with fallback and retry logic.
Practical comparison of Dubins and Reeds-Shepp path primitives for non-holonomic robots — forward-only vs reversible, and why it matters for Robocon field tasks.
Protocol design for reliable bidirectional communication between STM32 motor drivers and ROS2 nodes — checksum framing, timeout recovery, and encoder data streaming.
More notes on specific topics below