Skip to content

Add GNSS rotation heading bootstrap#67

Draft
jkaflik wants to merge 3 commits into
manankharwar:mainfrom
jkaflik:openmower/gnss-rotation-heading-bootstrap
Draft

Add GNSS rotation heading bootstrap#67
jkaflik wants to merge 3 commits into
manankharwar:mainfrom
jkaflik:openmower/gnss-rotation-heading-bootstrap

Conversation

@jkaflik
Copy link
Copy Markdown

@jkaflik jkaflik commented May 26, 2026

Summary

This adds a GNSS rotation-based heading bootstrap for setups where the GPS/GNSS antenna is not mounted at base_link.

In my OpenMower setup the antenna has a lever arm relative to base_link, so robot rotation makes the antenna trace a small arc. The observed GNSS displacement, relative yaw from odometry/gyro, and configured lever arm can infer absolute heading before normal track-based heading is reliable.

Additional change:

  // Minimum forward speed to count as real motion
  // Below this threshold: could be GPS jitter, spinning in place, or sliding
  const double MIN_SPEED = 0.2;  // m/s

  // Maximum yaw rate: if spinning fast, heading is not observable from track
  const double MAX_YAW_RATE = 0.3;  // rad/s (~17 deg/s)

Is extracted into parameter. In my case, with RTK, GPS jitter is much less, so min speed threshold can be lowered down. Happy to extract it into a separate PR.

The PR also includes small ROS compatibility fixes needed in Jazzy. (should not be a part of this PR)

Status

This is WIP.

I have only done a quick/superficial validation in simulation so far. I have not yet tested this on real hardware in an outdoor environment. I plan to do that in the coming days.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant