devkit_driver.course_over_ground
course_over_ground.py ───────────────────── Converts ublox_dgnss NAV-PVT → sensor_msgs/Imu for FusionCore.
Subscribes : /rover/ubx_nav_pvt (ublox_ubx_msgs/UBXNavPVT) Publishes : /gnss/heading (sensor_msgs/Imu)
Single-receiver fallback for relposned_heading_shim: when there is no second F9P and no dual-antenna baseline, this shim derives heading from the receiver’s course over ground (head_mot from NAV-PVT), gated by ground speed and the receiver’s reported heading accuracy.
Course over ground is only meaningful while the robot is moving — at low speeds the heading vector noise blows up. To keep /gnss/heading populated during dwells (e.g. topo node arrival pauses) the last accepted heading is re-published with inflated covariance until either a fresh fix passes the gates or STALE_TIMEOUT_S elapses.
NAV-PVT head_mot is True North referenced, NED, degrees × 1e-5. ROS convention: ENU yaw. NED → ENU: yaw_ENU = π/2 − heading_NED_rad
Running alongside relposned_heading_shim is safe in single-F9P mode (relposned publishes 0 messages with no baseline). Disable this shim when upgrading to dual-F9P + RTK so fusioncore receives only one heading source.
Functions
|
Classes
|