echo /odometry/filtered no data - robot localization package

asked 2022-03-24 04:55:35 -0500

Husam gravatar image

Hi , thank you for your great work. I'm using Ros2 galactic on jetson nano, and wanted to fuse data from wheel encoder and IMU using robot localization package ,for further implementation in NAV2 project for diff drive robot . I manged to publish the nav_msgs/Odometry on the /odom topic and sensor_msgs/Imu on the /imu topic, also all the needed transformations are sat up (odom to base_link ) and ( base_link to imu) , so my data are ready for fusion. when I run the ekf_node it's subscribing to the /odom and /imu topics and publishing the different topics such as /odometry/filtered.

jetson@nano:~$ ros2 node info /ekf_filter_node
/ekf_filter_node
  Subscribers:
    /bno055/imu: sensor_msgs/msg/Imu
    /clock: rosgraph_msgs/msg/Clock
    /odom: nav_msgs/msg/Odometry
    /parameter_events: rcl_interfaces/msg/ParameterEvent
    /set_pose: geometry_msgs/msg/PoseWithCovarianceStamped
  Publishers:
    /accel/filtered: geometry_msgs/msg/AccelWithCovarianceStamped
    /diagnostics: diagnostic_msgs/msg/DiagnosticArray
    /odometry/filtered: nav_msgs/msg/Odometry
    /parameter_events: rcl_interfaces/msg/ParameterEvent
    /rosout: rcl_interfaces/msg/Log
    /tf: tf2_msgs/msg/TFMessage

However, when I check the data published from these topics (/odometry/filtered ) using ros2 topic echo /odometry/filtered , I found that there is no data showing.

jetson@nano:~$ ros2 topic echo /odometry/filtered

.

I checked both topics (/odom and /imu ) and they are publishing the nav_msgs/Odometry and sensor_msgs/imu and everything looks just fine , does anyone has an idea what could be the issue that there are no data published by the ekf_node ?

I used ros2 topic echo /diagnostics and this what I got, not sure if it's useful.

---
header:
  stamp:
    sec: 1648115405
    nanosec: 166195478
  frame_id: ''
status:
- level: "\x02"
  name: 'ekf_filter_node: odometry/filtered topic status'
  message: No events recorded.
  hardware_id: none
  values:
  - key: Events in window
    value: '0'
  - key: Events since startup
    value: '0'
  - key: Duration of window (s)
    value: '9.999988'
  - key: Actual frequency (Hz)
    value: '0.000000'
  - key: Minimum acceptable frequency (Hz)
    value: '25.200000'
  - key: Maximum acceptable frequency (Hz)
    value: '35.200000'
---

also this a snippet from my config ekf.yaml

### ekf config file ###
ekf_filter_node:
    ros__parameters:

        frequency: 30.0


        two_d_mode: false


        publish_acceleration: true

        publish_tf: true


        map_frame: map              # Defaults to "map" if unspecified
        odom_frame: odom            # Defaults to "odom" if unspecified
        base_link_frame: base_link  # Defaults to "base_link" ifunspecified
        world_frame: odom           # Defaults to the value ofodom_frame if unspecified

        odom0: odom
        odom0_config: [true,  true,  true,
                       false, false, false,
                       false, false, false,
                       false, false, true,
                       false, false, false]

        imu0: bno055/imu
        imu0_config: [false, false, false,
                      true,  true,  true,
                      false, false, false,
                      false, false, false,
                      false, false, false]

I tried also use just one data source (/odom or /imu ) to reduce error source, but still the same result.

edit retag flag offensive close merge delete