echo /odometry/filtered no data - robot localization package
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.