Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to configure odom frame for move_base with only LiDAR and IMU odometry (no wheel odometry)? #130

Open
emirhancibir opened this issue Dec 3, 2024 · 0 comments

Comments

@emirhancibir
Copy link

emirhancibir commented Dec 3, 2024

I am using the hdl_localization package with move_base, but I don't have wheel odometry. My robot relies solely on LiDAR and IMU odometry for navigation.

Here is my current setup:

The hdl_localization node publishes the transform between the map frame and my sensor frame (laser) via the /odom topic.
I am using a static transform tree:
laser -> base_link -> ...
However, move_base requires an odom frame. I am unsure how to configure this in my current setup.

Should I use the odom frame directly from hdl_localization, or is there a better approach for integrating the odometry output with move_base?
How do I ensure the odom frame is consistent with move_base requirements in a system with no wheel odometry?
Any guidance or best practices would be greatly appreciated.

<!-- globalmap_server_nodelet -->
<node pkg="nodelet" type="nodelet" name="globalmap_server_nodelet" args="load hdl_localization/GlobalmapServerNodelet $(arg nodelet_manager)"  output="screen">
  <param name="globalmap_pcd" value="$(find servant_t)/pcd/liorf2/GlobalMap.pcd" />
  <param name="convert_utm_to_local" value="true" />
  <param name="downsample_resolution" value="0.1" />
</node>

<!-- hdl_localization_nodelet -->
<node pkg="nodelet" type="nodelet" name="hdl_localization_nodelet" args="load hdl_localization/HdlLocalizationNodelet $(arg nodelet_manager)">
  <remap from="/velodyne_points" to="$(arg points_topic)" />
  <remap from="/gpsimu_driver/imu_data" to="$(arg imu_topic)" />
  <!-- <remap from="/odom" to="/lidar_odom"/> -->
  <!-- odometry frame_id -->
  <param name="odom_child_frame_id" value="$(arg odom_child_frame_id)" />
  <!-- imu settings -->
  <!-- during "cool_time", imu inputs are ignored -->
  <param name="use_imu" value="$(arg use_imu)" />
  <param name="invert_acc" value="$(arg invert_imu_acc)" />
  <param name="invert_gyro" value="$(arg invert_imu_gyro)" />
  <param name="cool_time_duration" value="2.0" />
  <!-- robot odometry-based prediction -->
  <param name="enable_robot_odometry_prediction" value="$(arg enable_robot_odometry_prediction)" />
  <param name="robot_odom_frame_id" value="$(arg robot_odom_frame_id)" />
  <!-- ndt settings -->
  <!-- available reg_methods: NDT_OMP, NDT_CUDA_P2D, NDT_CUDA_D2D-->
  <param name="reg_method" value="NDT_OMP" />
  <!-- if NDT is slow for your PC, try DIRECT1 serach method, which is a bit unstable but extremely fast -->
  <param name="ndt_neighbor_search_method" value="DIRECT1" />
  <param name="ndt_neighbor_search_radius" value="2.0" />
  <param name="ndt_resolution" value="1.0" />
  <param name="downsample_resolution" value="0.1" />
  <!-- if "specify_init_pose" is true, pose estimator will be initialized with the following params -->
  <!-- otherwise, you need to input an initial pose with "2D Pose Estimate" on rviz" -->
  <param name="specify_init_pose" value="true" />
  <param name="init_pos_x" value="0.0" />
  <param name="init_pos_y" value="0.0" />
  <param name="init_pos_z" value="0.0" />
  <param name="init_ori_w" value="1.0" />
  <param name="init_ori_x" value="0.0" />
  <param name="init_ori_y" value="0.0" />
  <param name="init_ori_z" value="0.0" />

  <param name="use_global_localization" value="$(arg use_global_localization)" />
</node>

<node pkg="hdl_localization" type="plot_status.py" name="plot_estimation_errors" if="$(arg plot_estimation_errors)" />
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

No branches or pull requests

1 participant