Utm->odom tf is not being published (robot_localization eloquent-devel)
Hi everyone,
I'm using the robot_localization package for getting the position and velocity of my robot by using IMU and GPS. I am able to get the /odometery/filtered data.
However,
Utm->odom frame is not being published even when broadcast_utm_transform: true
.
Sensors used
- IMU data of type sensor_msgs/Imu (IMU has a magnetometer from which it derives its yaw)
- GPS data of type sensor_msgs/NavSatFix
Aim
To get a tf setup as shown below
utm->odom->base_link
Robot_localization setup
ekf_localization_node
- Inputs:
- IMU
- Transformed GPS data as an odometry message (navsat_transform_node output)
- Outputs
- Odometry message
navsat_transform_node
- Inputs
- IMU
- Raw GPS (NavSatFix)
- Odometry (output of ekf_localization_node)
- Outputs
- Transformed GPS data as odometry message
The broadcast utm tranform is set to true: broadcast_utm_transform: true
Required Info:
- Operating System:
- Ubuntu 18.04.4 LTS
- Installation type:
- robot_localization installed from source
- Version or commit hash:
- eloquent-devel
Steps to reproduce issue
After installing robot_localization from the source. Run the following in a terminal.
a. ros2 launch robot_localization ekf_map.launch.py &
with parameters as shown below
ekf_filter_node:
ros__parameters:
sensor_timeout: 0.1
two_d_mode: true
transform_time_offset: 0.0
transform_timeout: 0.0
publish_tf: true
map_frame: map
odom_frame: odom
base_link_frame: base_link
world_frame: odom
odom0: odometry/gps
odom0_config: [true, true, false,
false, false, false,
false, false, false,
false, false, true,
false, false, false]
odom0_queue_size: 2
odom0_nodelay: false
odom0_differential: false
odom0_relative: false
odom0_pose_rejection_threshold: 5.0
odom0_twist_rejection_threshold: 1.0
imu0: example/imu
imu0_config: [false, false, false,
true, true, true,
false, false, false,
true, true, true,
true, true, true]
imu0_nodelay: false
imu0_differential: false
imu0_relative: true
imu0_queue_size: 5
imu0_remove_gravitational_acceleration: true
b. ros2 launch robot_localization navsat_transform.launch.py
with parameters as shown below:
navsat_transform_node:
ros__parameters:
frequency: 30.0
delay: 3.0
magnetic_declination_radians: 0.0
yaw_offset: 0.0
zero_altitude: false
broadcast_utm_transform: true
broadcast_utm_transform_as_parent_frame: true
publish_filtered_gps: false
use_odometry_yaw: false
wait_for_datum: false
Expected behavior
To get a tf tree like
utm->odom->base_link
Actual behavior
odom->base_link
Please let me know if someone can help me figure this out. Thanks in advance.
I have the same problem but in Dashing.Did you manage to fix it?
@DanielRobotics Unfortunately I did not find a fix yet.
@ashwinshushil, Please update if you get it to work. I am still trying myself to get it running
I had a quite similar Problem and I just fixed it. For me it was a Namespace Problem where the
.yaml
wasn't in the correct Namespace. I had two working Options: either deletenavsat_transform_node:
in your navsat.yaml file or type in the complete namespace in which it was loaded in your.launch
file.I hope this helps you and isn't a few months to late.