robot_localization package ros
I am trying to use the robot localization package of ros to fuse the data coming from imu (on imu topic), wheel encoder (computed odometry on /odom topic) and a RTK GPS (differential gps on topic /odom_gps). The data coming from this differential gps is not lot/long coordinates. They are the relative position from the base station which is at a certain distance from the robot. Since this differential gps is giving data in the NED frame, I am publishing this data using odometry message. And all the positions and orientations are with respect to this base station frame.
Now since I have 2 odoms and 1 imu to fuse, I need 2 tf's, that is one from baselink to odom_gps and the other from baselink to odom. Only then it will be fused by the filter correctly. I am not able to do this since it gives warning/error of having 2 parents for 1 child (baselink).
Please can someone suggest the correct way to do this.
This is my config file:
#Configuation for robot odometry EKF
frequency: 30
two_d_mode: true
publish_tf: true
odom_frame: odom
base_link_frame: base_link
world_frame: odom
map_frame: map
#the odom0 configuration
odom0: /odom_gps
odom0_config: [true, true, false,
false, false, false,
false, false, false,
false, false, false,
false, false, false]
odom0_differential: false
# odom1 configuration
odom1: /odom
odom1_config: [true, true, false,
false, false, true,
true, true, false,
false, false, true,
false, false, false]
odom1_differential: true
# imu0 configuration
imu0: /imu
imu0_config: [false, false, false,
false, false, false,
false, false, false,
false, false, true, #angular velocity about z
true, false, false] #linear accleration along x
imu0_differential: false
process_noise_covariance: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0.06, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0.03, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0.03, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0.025, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0.025, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0.04, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.02, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0 ...
Please edit your message and include a sample message from each sensor input.
@Tom Moore , I have updated the details
Sorry for the run-around, but I have one more request. Given that this site is migrating to robotics.stackexchange.com, would you mind asking this question again there and sharing the link?