ERROR: "guess_frame_id" is set, but guess cannot be computed between frames "odom" -> "base_link". Aborting odometry update...

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

ERROR: "guess_frame_id" is set, but guess cannot be computed between frames "odom" -> "base_link". Aborting odometry update...

Masoumeh
This post was updated on .
Hi matteu,
after that i run a bag file, and then rtabmap, it shows me the following error:

"guess_frame_id" is set, but guess cannot be computed between frames "odom" -> "base_link". Aborting odometry update...

I have activeted the icp_odometry, and I have the following setting in rtabmap.launch file:

 
    <arg if="$(arg icp_odometry)" name="icp_odometry" value="true" />
    <arg if="$(arg icp_odometry)" name="odom_guess_frame_id" value="odom" />
    <arg if="$(arg icp_odometry)" name="vo_frame_id" value="icp_odom" />
    <arg unless="$(arg slam2d)"   name="wait_imu_to_init" value="true" />
    <arg if="$(arg lidar3d)"      name="odom_args" value="--Icp/CorrespondenceRatio 0.01"/>



 <arg name="frame_id"                default="base_link"/>     
  <arg name="odom_frame_id"           default="icp_odom"/>     
  <arg name="odom_frame_id_init"      default=""/>   
  <arg name="map_frame_id"            default="map"/

How can i resolve this error?
Reply | Threaded
Open this post in threaded view
|

Re: ERROR: "guess_frame_id" is set, but guess cannot be computed between frames "odom" -> "base_link". Aborting odometry update...

Masoumeh
Dear Mattieu,
in the main launch file you have set:
param name="guess_frame_id"    type="string" value="$(arg odom_guess_frame_id)"

and when i activate icp_odometry, guess_fame_id is activated as well, because:
(pay attention to the second line in the following part)
 
    <arg if="$(arg icp_odometry)" name="icp_odometry" value="true" />
    <arg if="$(arg icp_odometry)" name="odom_guess_frame_id" value="odom" />
    <arg if="$(arg icp_odometry)" name="vo_frame_id" value="icp_odom" />
    <arg unless="$(arg slam2d)"   name="wait_imu_to_init" value="true" />
    <arg if="$(arg lidar3d)"      name="odom_args" value="--Icp/CorrespondenceRatio 0.01"/>

so there is no way to not to use guess_frame_id!
what should i do to remove the error:
"guess_frame_id" is set, but guess cannot be computed between frames "odom" -> "base_link". Aborting odometry update...
Reply | Threaded
Open this post in threaded view
|

Re: ERROR: "guess_frame_id" is set, but guess cannot be computed between frames "odom" -> "base_link". Aborting odometry update...

Masoumeh
Dear AMttieu,
Would you please help me to solve this problem?

Thanks a lot
Reply | Threaded
Open this post in threaded view
|

Re: ERROR: "guess_frame_id" is set, but guess cannot be computed between frames "odom" -> "base_link". Aborting odometry update...

Masoumeh
In reply to this post by Masoumeh
hi everyone,

I get stuck in this stage, i would be grateful, if anybody can support.

Thanks a lot
Reply | Threaded
Open this post in threaded view
|

Re: ERROR: "guess_frame_id" is set, but guess cannot be computed between frames "odom" -> "base_link". Aborting odometry update...

matlabbe
Administrator
Which node is publishing /odom->/base_link? if there is no node publishing it, remove odom_guess_frame_id.
Reply | Threaded
Open this post in threaded view
|

Re: ERROR: "guess_frame_id" is set, but guess cannot be computed between frames "odom" -> "base_link". Aborting odometry update...

Masoumeh
hi,

odom --> base_link is publishing by robot-localization pkg which is stored in the robot side.

as i activate the icp-odometry, guess frame-id is also activated as well, because of the setting which you have defined:

param name="guess_frame_id"    type="string" value="$(arg odom_guess_frame_id)"

 <arg if="$(arg icp_odometry)" name="icp_odometry" value="true" />         
    <arg if="$(arg icp_odometry)" name="odom_guess_frame_id" value="odom" />      (HERE I MEAN!)
    <arg if="$(arg icp_odometry)" name="vo_frame_id" value="icp_odom" />
    <arg unless="$(arg slam2d)"   name="wait_imu_to_init" value="true" />
    <arg if="$(arg lidar3d)"      name="odom_args" value="--Icp/CorrespondenceRatio 0.01"/>

thanks
Reply | Threaded
Open this post in threaded view
|

Re: ERROR: "guess_frame_id" is set, but guess cannot be computed between frames "odom" -> "base_link". Aborting odometry update...

matlabbe
Administrator
Hi,

as i activate the icp-odometry, guess frame-id is also activated as well, because of the setting which you have defined
well I think this was for a specific example. In your case, if robot_localization is depending on icp_odometry to publish its odometry, and icp_odometry is waiting for robot_localization output, this is a deadlock.
Reply | Threaded
Open this post in threaded view
|

Re: ERROR: "guess_frame_id" is set, but guess cannot be computed between frames "odom" -> "base_link". Aborting odometry update...

Masoumeh
This post was updated on .
Dear mattieu,

robot-localization is not depending on icp-odometry.
actually we are using two instances of robot-localization pkg, one of them provide the /odometry/filtered topic for odom->baselink. (local odometry)
the other one provides global odometry (/odometry/filtered_map) between map->odom.

but as i want to do navigation based on gps, I used rtabmap just as a map provider, and I have activated icp-odometry as well to provide the odometry information for merging with the global odometry information.

now my frame is sth like this: frames_RITA2.png
rosgraph.svg

but now the problem is that:
1) i have ERROR related the guess-frame-id:  "guess_frame_id" is set, but guess cannot be computed between frames "odom" -> "base_link"

2) in RVIZ, the vehicle is moving a lot, the lidar points always changing, when the vehicle wants to turn, the point clouds is also turning so the poit cloud is not matched with the 2d map anymore

In the following you can see my launch file:

ekf_se_map:
  frequency: 30
  sensor_timeout: 0.1
  two_d_mode: true
  transform_time_offset: 0.0
  transform_timeout: 0.0
  print_diagnostics: true
  debug: false

  map_frame: map
  odom_frame: icp_odom
  base_link_frame: base_link
  world_frame: map

# -------------------------------------
# Wheel odometry:

  odom0: /warthog_velocity_controller/odom
  odom0_config: [false, false, false,
                 false, false, false,
                 true, true, false,
                 false, false, true,
                 false, false, false]
  odom0_queue_size: 10
  odom0_nodelay: true
  odom0_differential: false
  odom0_relative: false
# -------------------------------------
# GPS odometry:
  odom1: /outdoor_waypoint_nav/odometry/gps
  odom1_config: [true, true, false,
                 false, false, false,
                 false, false, false,
                 false, false, false,
                 false, false, false]
  odom1_queue_size: 10
  odom1_nodelay: true
  odom1_differential: false
  odom1_relative: false

# -------------------------------------
# Lidar odometry:
# velocity from odometry

  odom2: /rtabmap/odom
  odom2_config: [false, false, false,
                 false, false, false,
                 true, true, false,
                 false, false, true,
                 false, false, false]
  odom2_queue_size: 10
  odom2_nodelay: true
  odom2_differential: true    
  odom2_relative: false
#..................................................
#Localization_Pose
  pose0: /rtabmap/localization_pose
  pose0_config: [true, true, false,
                 false, false, true,
                 false, false, false,
                 false, false, false,
                 false, false, false]
  pose0_queue_size: 10
  pose0_differential: false
  pose0_relative: false

# --------------------------------------
# imu configure:

  imu0: /gx5/imu/data
  imu0_config: [false, false, false,
                false, false, true,
                false, false, false,
                true, true, false,
                true, true, false]
  imu0_nodelay: true
  imu0_differential: true          
  imu0_relative: false               #
  imu0_queue_size: 10
  imu0_remove_gravitational_acceleration: true

  use_control: false

  process_noise_covariance: [1.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,    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,    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]

  initial_estimate_covariance: [1.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,    1e-9, 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,    1.0,  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,    1.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,    1.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,     1.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,     1.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,    1.0]