ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Moving all the comments to a complete answer:

  1. Change world_frame: odom so the EKF publishes the odom→base_link transform. If world frame is set to map it will publish map→odom transform and you will needsomething else generating the odom->base_link transform

  2. Publish a static tf between map->odom such as a null rotation RPY(0,0,0):

    <node pkg="tf2_ros" type="static_transform_publisher" name="map_odom" args="0 0 0 0 0 0 map odom"/>

  3. Make sure you fill up the covariance diagonal values of the sensor messages without. The covariances indicate the confidence of a measurement and the filter weights the covariances to integrate those measurements.

  4. Fill up your IMU message since it is empty. If it its for testing purposes set the orientation to (0,0,0), which in quaternions is:

    imu_msg.orientation.x = 0 imu_msg.orientation.y = 0 imu_msg.orientation.z = 0 imu_msg.orientation.w = 1

  5. Change odom0_config to:

    odom0_config: [true, true, false, false, false, false, false false, false, false, false, false, false, false, false]

  6. If you are not populating the IMU msg with accelerations, I would suggest you set imu0_config lines 4 and 5 to false

Moving all the comments to a complete answer:

  1. Change world_frame: odom so the EKF publishes the odom→base_link transform. If world frame is set to map it will publish map→odom transform and you will needsomething else generating the odom->base_link transform

  2. Publish a static tf between map->odom such as a null rotation RPY(0,0,0):

    <node pkg="tf2_ros" type="static_transform_publisher" name="map_odom" args="0 0 0 0 0 0 map odom"/>

  3. Make sure you fill up the covariance diagonal values of the sensor messages without. The covariances indicate the confidence of a measurement and the filter weights the covariances to integrate those measurements.

  4. Fill up your IMU message since it is empty. If it its for testing purposes set the orientation to (0,0,0), which in quaternions is:

    imu_msg.orientation.x = 0 imu_msg.orientation.y = 0 imu_msg.orientation.z = 0 imu_msg.orientation.w = 1

  5. Change odom0_config to:

    odom0_config: [true, true, false, false, false, false, false false, false, false, false, false, false, false, false]

  6. If you are not populating the IMU msg with accelerations, I would suggest you set imu0_config lines 4 and 5 to false

Moving all the comments to a complete answer:

  1. Change world_frame: odom so the EKF publishes the odom→base_link transform. If world frame is set to map it will publish map→odom transform and you will needsomething else generating the odom->base_link transform

  2. Publish a static tf between map->odom such as a null rotation RPY(0,0,0):

<node pkg="tf2_ros" type="static_transform_publisher" name="map_odom" args="0 0 0 0 0 0 map odom"/>

  1. Make sure you fill up the covariance diagonal values of the sensor messages without. The covariances indicate the confidence of a measurement and the filter weights the covariances to integrate those measurements.

  2. Fill up your IMU message since it is empty. If it its for testing purposes set the orientation to (0,0,0), which in quaternions is:

imu_msg.orientation.x = 0
imu_msg.orientation.y = 0
imu_msg.orientation.z = 0
imu_msg.orientation.w = 1

1
  1. Change odom0_config to:

    odom0_config: [true, true, false, false, false, false, false false, false, false, false, false, false, false, false]

  2. If you are not populating the IMU msg with accelerations, I would suggest you set imu0_config lines 4 and 5 to false

Moving all the comments to a complete answer:

  1. Change world_frame: odom so the EKF publishes the odom→base_link transform. If world frame is set to map it will publish map→odom transform and you will needsomething else generating the odom->base_link transform

  2. Publish a static tf between map->odom such as a null rotation RPY(0,0,0):

<node pkg="tf2_ros" type="static_transform_publisher" name="map_odom" args="0 0 0 0 0 0 map odom"/>

  1. Make sure you fill up the covariance diagonal values of the sensor messages without. The covariances indicate the confidence of a measurement and the filter weights the covariances to integrate those measurements.

  2. Fill up your IMU message since it is empty. If it its for testing purposes set the orientation to (0,0,0), which in quaternions is:

 

imu_msg.orientation.x = 0 imu_msg.orientation.y = 0 imu_msg.orientation.z = 0 imu_msg.orientation.w = 1

    1

  1. Change odom0_config to:

    odom0_config: [true, true, false, false, false, false, false false, false, false, false, false, false, false, false]

  2. If you are not populating the IMU msg with accelerations, I would suggest you set imu0_config lines 4 and 5 to false

Moving all the comments to a complete answer:

  1. Change world_frame: odom so the EKF publishes the odom→base_link transform. If world frame is set to map it will publish map→odom transform and you will needsomething else generating the odom->base_link transform

  2. Publish a static tf between map->odom such as a null rotation RPY(0,0,0):

<node pkg="tf2_ros" type="static_transform_publisher" name="map_odom" args="0 0 0 0 0 0 map odom"/>

odom" />
  1. Make sure you fill up the covariance diagonal values of the sensor messages without. The covariances indicate the confidence of a measurement and the filter weights the covariances to integrate those measurements.

  2. Fill up your IMU message since it is empty. If it its for testing purposes set the orientation to (0,0,0), which in quaternions is:

 imu_msg.orientation.x = 0
 imu_msg.orientation.y = 0
 imu_msg.orientation.z = 0
 imu_msg.orientation.w = 1

  • 1

    1. Change odom0_config to:

    odom0_config: [true, true, false,
                   false, false, false,
                   false false, false,
                   false, false, false,
                   false, false, false]

  • false]

    1. If you are not populating the IMU msg with accelerations, I would suggest you set imu0_config lines 4 and 5 to false

    Moving all the comments to a complete answer:

    1. Change

      1.Change world_frame: odom so the EKF publishes the odom→base_link transform. If world frame is set to map it will publish map→odom transform and you will needsomething else generating the odom->base_link transform

    2. Publish

      2.Publish a static tf between map->odom such as a null rotation RPY(0,0,0):

    <node pkg="tf2_ros" type="static_transform_publisher" name="map_odom" args="0 0 0 0 0 0 map odom" />
    
    1. Make

      3.Make sure you fill up the covariance diagonal values of the sensor messages without. The covariances indicate the confidence of a measurement and the filter weights the covariances to integrate those measurements.

    2. Fill

      4.Fill up your IMU message since it is empty. If it its for testing purposes set the orientation to (0,0,0), which in quaternions is:

     imu_msg.orientation.x = 0
     imu_msg.orientation.y = 0
     imu_msg.orientation.z = 0
     imu_msg.orientation.w = 1
    
    1. Change

      5.Change odom0_config to:

    odom0_config: [true, true, false,
                    false, false, false,
                    false false, false,
                    false, false, false,
                    false, false, false]
    
    1. If

      6.If you are not populating the IMU msg with accelerations, I would suggest you set imu0_config lines 4 and 5 to false

    Moving all the comments to a complete answer:

    1.Change world_frame: odom so the EKF publishes the odom→base_link transform. If world frame is set to map it will publish map→odom transform and you will needsomething need something else generating the odom->base_link transform

    2.Publish a static tf between map->odom such as a null rotation RPY(0,0,0):

    <node pkg="tf2_ros" type="static_transform_publisher" name="map_odom" args="0 0 0 0 0 0 map odom" />
    

    3.Make sure you fill up the covariance diagonal values of the sensor messages without. The covariances indicate the confidence of a measurement and the filter weights the covariances to integrate those measurements.

    4.Fill up your IMU message since it is empty. If it its for testing purposes set the orientation to (0,0,0), which in quaternions is:

    imu_msg.orientation.x = 0
    imu_msg.orientation.y = 0
    imu_msg.orientation.z = 0
    imu_msg.orientation.w = 1
    

    5.Change odom0_config to:

    odom0_config: [true, true, false,
                         false, false, false,
                         false false, false,
                         false, false, false,
                         false, false, false]
    

    6.If you are not populating the IMU msg with accelerations, I would suggest you set imu0_config lines 4 and 5 to false

    Moving all the comments to a complete answer:

    1.Change world_frame: odom so the EKF publishes the odom→base_link transform. If world frame is set to map it will publish map→odom transform and you will need something else generating the odom->base_link transform

    2.Publish a static tf between map->odom such as a null rotation RPY(0,0,0):

    <node pkg="tf2_ros" type="static_transform_publisher" name="map_odom" args="0 0 0 0 0 0 map odom" />

    odom"/>

    3.Make sure you fill up the covariance diagonal values of the sensor messages without. The covariances indicate the confidence of a measurement and the filter weights the covariances to integrate those measurements.

    4.Fill up your IMU message since it is empty. If it its for testing purposes set the orientation to (0,0,0), which in quaternions is:

    imu_msg.orientation.x = 0 imu_msg.orientation.y = 0 imu_msg.orientation.z = 0 imu_msg.orientation.w = 1

    1

    5.Change odom0_config to:

    odom0_config: [true, true, false, false, false, false, false false, false, false, false, false, false, false, false]

    false]

    6.If you are not populating the IMU msg with accelerations, I would suggest you set imu0_config lines 4 and 5 to false

    Moving all the comments to a complete answer:

    1.Change world_frame: odom so the EKF publishes the odom→base_link transform. If world frame is set to map it will publish map→odom transform and you will need something else generating the odom->base_link transform

    2.Publish a static tf between map->odom such as a null rotation RPY(0,0,0):

    <node pkg="tf2_ros" type="static_transform_publisher" name="map_odom" args="0 0 0 0 0 0 map odom"/>

    odom" />

    3.Make sure you fill up the covariance diagonal values of the sensor messages without. The covariances indicate the confidence of a measurement and the filter weights the covariances to integrate those measurements.

    4.Fill up your IMU message since it is empty. If it its for testing purposes set the orientation to (0,0,0), which in quaternions is:

    imu_msg.orientation.x = 0
    imu_msg.orientation.y = 0
    imu_msg.orientation.z = 0
    imu_msg.orientation.w = 1

    1

    5.Change odom0_config to:

    odom0_config: [true, true, false,
                         false, false, false,
                         false false, false,
                         false, false, false,
                         false, false, false]

    false]

    6.If you are not populating the IMU msg with accelerations, I would suggest you set imu0_config lines 4 and 5 to false

    Moving all the comments to a complete answer:

    1.Change world_frame: odom so the EKF publishes the odom→base_link transform. If world frame is set to map it will publish map→odom transform and you will need something else generating the odom->base_link transform

    2.Publish a static tf between map->odom such as a null rotation RPY(0,0,0):

    <node pkg="tf2_ros" type="static_transform_publisher" name="map_odom" args="0 0 0 0 0 0 map odom" />
    

    3.Make sure you fill up the covariance diagonal values of the sensor messages without. The covariances indicate the confidence of a measurement and the filter weights the covariances to integrate those measurements.

    4.Fill up your IMU message since it is empty. at least with the orientation. If it its for testing purposes set the orientation to (0,0,0), which in quaternions is:

    imu_msg.orientation.x = 0
    imu_msg.orientation.y = 0
    imu_msg.orientation.z = 0
    imu_msg.orientation.w = 1
    

    5.Change odom0_config to:

    odom0_config: [true, true, false,
                         false, false, false,
                         false false, false,
                         false, false, false,
                         false, false, false]
    

    6.If you are not populating the IMU msg with accelerations, I would suggest you set imu0_config lines 4 and 5 to false

    Moving all the comments to a complete answer:

    1.Change world_frame: odom so the EKF publishes the odom→base_link transform. If world frame is set to map it will publish map→odom transform and you will need something else generating the odom->base_link transform

    2.Publish a static tf between map->odom such as a null rotation RPY(0,0,0):

    <node pkg="tf2_ros" type="static_transform_publisher" name="map_odom" args="0 0 0 0 0 0 map odom" />
    

    3.Make sure you fill up the covariance diagonal values of the sensor messages without. messages. The covariances indicate indicates the confidence of a measurement and the filter weights the covariances to integrate those measurements. If there are no covariances the filter will not perform as expected.

    4.Fill up your IMU message at least with the orientation. If it its for testing purposes set the orientation to (0,0,0), which in quaternions is:

    imu_msg.orientation.x = 0
    imu_msg.orientation.y = 0
    imu_msg.orientation.z = 0
    imu_msg.orientation.w = 1
    

    5.Change odom0_config to:to (in case you do not measure height and or two_d_mode=true):

    odom0_config: [true, true, false,
                         false, false, false,
                         false false, false,
                         false, false, false,
                         false, false, false]
    

    6.If you are not populating the IMU msg with angular rate and linear accelerations, I would suggest you set imu0_config lines 4 and 5 to false

    false.