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

Move out ekf_localizer params from the xml launch file to a dedicated yaml config file #2958

Closed
3 tasks done
VRichardJP opened this issue Feb 28, 2023 · 1 comment
Closed
3 tasks done
Labels
type:new-feature New functionalities or additions, feature requests.

Comments

@VRichardJP
Copy link
Contributor

Checklist

  • I've read the contribution guidelines.
  • I've searched other issues and no duplicate issues were found.
  • I've agreed with the maintainers that I can plan this task.

Description

Currently, ekf_localizer params are all hardcoded in the ekf_localizer.launch.xml file. This is inconsistent with other packages, for which launch files and runtime parameters are split in different files.

For example for ndt_scan_matcher.param.yaml:

Purpose

Make ekf_localizer consistent with other packages.
Separating params from the launch file makes it easier to override the configuration.

Possible approaches

To keep the current behavior, we could have:

  • src/universe/autoware.universe/localization/ekf_localizer/config/ekf_localizer.param.yaml:
/**:
  ros__parameters:
    show_debug_info: false
    enable_yaw_bias_estimation: True
    predict_frequency: 50.0
    tf_rate: 50.0
    extend_state_step: 50

    # for Pose measurement
    pose_additional_delay: 0.0
    pose_measure_uncertainty_time: 0.01
    pose_smoothing_steps: 5
    pose_gate_dist: 10000.0

    # for twist measurement
    twist_additional_delay: 0.0
    twist_smoothing_steps: 2
    twist_gate_dist: 10000.0

    # for process model
    proc_stddev_yaw_c: 0.005
    proc_stddev_vx_c: 10.0
    proc_stddev_wz_c: 5.0
  • src/launcher/autoware_launch/autoware_launch/config/localization/ekf_localizer.param.yaml:
/**:
  ros__parameters:
    show_debug_info: false
    enable_yaw_bias_estimation: True
    predict_frequency: 50.0
    tf_rate: 50.0
    extend_state_step: 50

    # for Pose measurement
    pose_additional_delay: 0.0
    pose_measure_uncertainty_time: 0.01
    pose_smoothing_steps: 5
    pose_gate_dist: 10000.0

    # for twist measurement
    twist_additional_delay: 0.0
    twist_smoothing_steps: 2
    twist_gate_dist: 10000.0

    # for process model
    proc_stddev_yaw_c: 0.005
    proc_stddev_vx_c: 10.0
    proc_stddev_wz_c: 5.0
  • src/universe/autoware.universe/localization/ekf_localizer/launch/ekf_localizer.launch.xml:
<launch>
  <arg name="param_file" default="$(find-pkg-share ekf_localizer)/config/ekf_localizer.param.yaml"/>

  <arg name="input_initial_pose_name" default="initialpose3d"/>
  <arg name="input_trigger_node_service_name" default="trigger_node" description="trigger node service"/>

  <!-- input topic name -->
  <arg name="input_pose_with_cov_name" default="in_pose_with_covariance"/>
  <arg name="input_twist_with_cov_name" default="in_twist_with_covariance"/>

  <!-- output topic name -->
  <arg name="output_odom_name" default="ekf_odom"/>
  <arg name="output_pose_name" default="ekf_pose"/>
  <arg name="output_pose_with_covariance_name" default="ekf_pose_with_covariance"/>
  <arg name="output_biased_pose_name" default="ekf_biased_pose"/>
  <arg name="output_biased_pose_with_covariance_name" default="ekf_biased_pose_with_covariance"/>
  <arg name="output_twist_name" default="ekf_twist"/>
  <arg name="output_twist_with_covariance_name" default="ekf_twist_with_covariance"/>

  <node pkg="ekf_localizer" exec="ekf_localizer" name="ekf_localizer" output="screen">
    <remap from="in_pose_with_covariance" to="$(var input_pose_with_cov_name)"/>

    <remap from="in_twist_with_covariance" to="$(var input_twist_with_cov_name)"/>

    <remap from="initialpose" to="$(var input_initial_pose_name)"/>
    <remap from="trigger_node_srv" to="$(var input_trigger_node_service_name)"/>

    <param name="pose_frame_id" value="map"/>

    <remap from="ekf_odom" to="$(var output_odom_name)"/>
    <remap from="ekf_pose" to="$(var output_pose_name)"/>
    <remap from="ekf_pose_with_covariance" to="$(var output_pose_with_covariance_name)"/>
    <remap from="ekf_biased_pose" to="$(var output_biased_pose_name)"/>
    <remap from="ekf_biased_pose_with_covariance" to="$(var output_biased_pose_with_covariance_name)"/>
    <remap from="ekf_twist" to="$(var output_twist_name)"/>
    <remap from="ekf_twist_with_covariance" to="$(var output_twist_with_covariance_name)"/>

    <param from="$(var param_file)"/>
  </node>
</launch>
  • In src/launcher/autoware_launch/autoware_launch/launch/components/tier4_localization_component.launch.xml, add:
    <arg name="ekf_localizer_param_path" value="$(find-pkg-share autoware_launch)/config/localization/ekf_localizer.param.yaml"/>
  • In src/universe/autoware.universe/launch/tier4_localization_launch/launch/localization.launch.xml, add:
    <arg name="ekf_localizer_param_path"/>
  • In src/universe/autoware.universe/launch/tier4_localization_launch/launch/pose_twist_fusion_filter/pose_twist_fusion_filter.launch.xml, add:
  <include file="$(find-pkg-share ekf_localizer)/launch/ekf_localizer.launch.xml">
    <!-- ... -->
    <arg name="param_file" value="$(var ekf_localizer_param_path)"/>
  </include>

Definition of done

ekf_localizer runtime parameters are loaded from dedicated config files instead of being hardcoded in its launch file.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type:new-feature New functionalities or additions, feature requests.
Projects
None yet
Development

No branches or pull requests

2 participants