feat(perception): wheel encoder differential drive odometry (Issue #184) #318
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "sl-perception/issue-184-wheel-odom"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Closes #184
saltybot_bridge_msgsament_cmake package withWheelTicks.msg(int32 left/right encoder counts from STM32 bridge)WheelOdomNodesubscribes to/saltybot/wheel_ticks(RELIABLE QoS), integrates midpoint-Euler differential drive kinematics, publishesnav_msgs/Odometryon/odom_wheelat 50 Hzodom → base_linkTF broadcast (configurable viapublish_tfparam)_wheel_odom.py(no ROS2 deps):unwrap_delta,ticks_to_meters,integrate_odom,normalize_angle,quat_from_yawParameters
wheel_radiuswheel_baseticks_per_revpublish_hzodom_frame_idodombase_frame_idbase_linkpublish_tftrueTest plan
test/test_wheel_odom.py— 42 tests, 0 failures (pure Python, no ROS2 required)unwrap_delta: normal deltas, zero, positive + negative int32 rollover, symmetryticks_to_meters: zero ticks, full/half rev, negative, zero guard, proportionalitynormalize_angle: 0, 2π→0, 3π/2→-π/2, large multiplesintegrate_odom: straight fwd/bwd/y-axis/accumulation, rotation (left/right/spin), 4×90° closure, 360° spin closurequat_from_yaw: 0, π, π/2, -π/2, unit norm for parametric yaw values🤖 Generated with Claude Code
Adds saltybot_bridge_msgs package with WheelTicks.msg (int32 left/right encoder counts) and a WheelOdomNode that subscribes to /saltybot/wheel_ticks, integrates midpoint-Euler differential drive kinematics (handling int32 counter rollover), and publishes nav_msgs/Odometry on /odom_wheel at 50 Hz with optional TF broadcast. New files: jetson/ros2_ws/src/saltybot_bridge_msgs/ msg/WheelTicks.msg CMakeLists.txt, package.xml jetson/ros2_ws/src/saltybot_bringup/ saltybot_bringup/_wheel_odom.py — pure kinematics (no ROS2 deps) saltybot_bringup/wheel_odom_node.py — 50 Hz timer node + TF broadcast test/test_wheel_odom.py — 42 tests, all passing Modified: saltybot_bringup/package.xml — add saltybot_bridge_msgs, nav_msgs deps saltybot_bringup/setup.py — add wheel_odom console_script entry Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>b4181183e7to067a871103