Dual_ekf and navsat_transform for outdoor GPS based navigation
Hi,
I need help for implementing GPS based outdoor navigation for my project and I have spent weeks trying to figure out how I could improve the functioning. I am attaching a video here as to how the visualization on RVIZ looks like and the description of the problem is as follows
Issue:
1)The robot position drifts as I move it in its environment and the orientation of the robot on RVIZ is also not facing the correct way when compared to the actual orientation. There is a 180 degrees shift in its orientation.To help you understand the drift, on the video , the robot is actually moving in the direction indicated by the green arrow.
2) The odometry/gps output from navsat_transform doesnt match odometry/filtered and odometry/filtered_map. While both the local and global odometry (i.e odometry/filtered and odometry/filtered_map match each other). I tried adding the magnetic declination and the yaw_offset (imu/data yaw value was not zero when facing magnetic north) in the navsat_transform parameters.
3) On RVIZ, the odom frame position and orientaion on TF is not stable, it changes.
Frame convention :
Map_frame: map
Odom_frame: odom
Base_link frame: Base_footprint
I have been going through several ros answers and I am running out of ideas and time
Here are my file contents
1) Dual_ekf_navsat.yaml
ekf_se_odom:
frequency: 30
sensor_timeout: 0.1
two_d_mode: true #false
transform_time_offset: 0.0
transform_timeout: 0.0
print_diagnostics: true
debug: false
map_frame: map
odom_frame: odom
base_link_frame: base_footprint #base_link
world_frame: odom
odom0: odom #odometry/wheel
odom0_config: [false, false, false,
false, false, false,
true, true, true,
false, false, true,
false, false, false]
odom0_queue_size: 10
odom0_nodelay: true
odom0_differential: false
odom0_relative: false
imu0: imu/data
imu0_config: [false, false, false,
true, true, false,
false, false, false,
true, true, true,
true, true, true]
imu0_nodelay: false
imu0_differential: false
imu0_relative: false
imu0_queue_size: 10
imu0_remove_gravitational_acceleration: true
use_control: false
process_noise_covariance: [1e-3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1e-3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1e-3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0.3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0.3, 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.5, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0.1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0.3, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.3, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.3, 0, 0, 0,
0 ...
Hi,
I just added the frames that I am using , hope it helps
Can somebody pls guide me ?