Using teb_local_planner with robot_localization
Hello,
I am trying to get the teb planner (for ackermann vehicle) working with robot_localization ( wheel, IMU, & GPS).
Previously I was using teb planner with amcl for localization with good results. When I switched to using robot_localization (dual ekf navsat https://github.com/cra-ros-pkg/robot_... ) the teb planner began behaving erratically.
The odometry/filtered and odometry/filtered_map from the ekf nodes look good in rviz and don't jump around alot.
However the teb planner now is sending my robot in reverse for long distances until it crashes into a wall. Otherwise it sometimes just sends it in a circle.
My main question is, are there settings that need to be changed to use teb planner with the robot_localization package? what should I use for "odom_topic" in the teb planner? Which "global_frame" should I use for my local and global costmaps? If cmd_angle_instead_rotvel is set to true, will that conflict with twist messages coming back from the ekf_node odometry?
Any help would be greatly appreciated. For reference, my (relevant?) teb local planner parameters are as follows:
TebLocalPlannerROS:
odom_topic: odometry/filtered
teb_autosize: True
dt_ref: 0.3
dt_hysteresis: 0.1
global_plan_overwrite_orientation: True
max_global_plan_lookahead_dist: 6.0
feasibility_check_no_poses: 5
max_vel_x: 0.1
max_vel_x_backwards: 0.1
max_vel_theta: 0.5
acc_lim_x: 0.1
acc_lim_theta: 0.5
min_turning_radius: 4.0
wheelbase: 1.8542 # Wheelbase of our robot
cmd_angle_instead_rotvel: True
Update: 1
@ufr3c_tjc thanks for the quick response. I have done as you say and changed my global_frame to odom for both the local and global costmap. It seems you have a very similar setup to mine (dual ekf with one continuous and one discrete gps).
However this change does not seem to fix my problem. The interesting thing I have found is that the teb_planner works fine with the robot_localization as long as I don't set the odom_topic to be /odometry/filtered (ie the output of my continuous ekf). If I leave odom_topic as the default odom (which doesnt exist) the teb_planner works fine. Therefore I believe that something in the teb_planner code is conflicting with the odom information being published by the ekf. Could it possibly be that the teb_planner doesn't expect the velocities to be in the base_footprint frame (ie only instantaneous x velocities?)
Any further ideas? Perhaps @croesmann has an idea?
Yeah that is a weird one. Is the continuous ekf node publishing the odom to base_link transform? I'd guess that the planner uses the transform for position, and maybe only the velocity is pulled from the odom message. If you look at DWA local planner it doesn't require an odom topic.
Do you know if the DWA local planner supports ackermann steering?