feat: add RF2O laser odometry package (ported from lzu_robot)

Range Flow-based 2D odometry (ICRA 2016). Provides continuous odom->base_footprint TF from /scan without wheel odometry. Refactored: core algorithm in pure C++ class, ROS coupling only in node wrapper.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
2026-06-19 06:30:20 +08:00
parent c12a35a4a2
commit 46a18f68bf
9 changed files with 2004 additions and 0 deletions

View File

@@ -0,0 +1,22 @@
from launch import LaunchDescription
from launch_ros.actions import Node
def generate_launch_description():
return LaunchDescription([
Node(
package='rf2o_laser_odometry',
executable='rf2o_laser_odometry_node',
name='rf2o_laser_odometry',
parameters=[{
'laser_scan_topic' : '/scan',
'odom_topic' : '/odom',
'publish_tf' : True,
'base_frame_id' : 'base_footprint',#base_footprint
'odom_frame_id' : 'odom',
'init_pose_from_topic' : '',
'freq' : 10.0}],
),
])