Hi, Mathieu,
Currently, I use the following configuration on the robot: wheel odometry (/wheel_odom) as guess for icp_odometry and icp_odometry output as /odom for rtabmap. When I launch this configuration it throws these errors for a few seconds and then works fine: [ WARN] [1647444262.047491739]: odometry: Could not get transform from /wheel_odom to base_footprint (stamp=1647444261.962495) after 0.100000 seconds ("wait_for_transform_duration"=0.100000)! Error="Lookup would require extrapolation -0.130254030s into the future. Requested time 1647444261.962495327 but the latest data is at time 1647444261.832241297, when looking up transform from frame [base_footprint] to frame [wheel_odom]. canTransform returned after 0.100217 timeout was 0.1." [ERROR] [1647444262.047700818]: "guess_frame_id" is set, but guess cannot be computed between frames "/wheel_odom" -> "base_footprint". Aborting odometry update... I tried to set "wait_for_transform_duration" to 50 as global parameter and as private parameter for icp_odometry and rtabmap, but still get these warnings about 0.1 and errors for few first seconds. Also I did "rosparam get wait_for_transform_duration" and it printed 50... Am I doing something wrong? |
Administrator
|
Is TF wheel_odom -> base_footprint exist? ("rosrun tf2_tools view_frames.py" to see the tf tree) The guess is a TF, not a topic. |
Yes, I publish both /wheel_odom topic and /wheel_odom->base_footprint TF from the same Python script, and if I do "rosrun tf tf_echo /wheel_odom base_footprint" at once with main launch file, I get this output:
------------------ [ INFO] [1647504028.659039964]: Connected to master at [10.10.101.218:11311] Failure at 1647504029.717054738 Exception thrown:"wheel_odom" passed to lookupTransform argument target_frame does not exist. The current list of frames is: Frame frontal_camera_link exists with parent base_link. Frame base_link exists with parent base_footprint. Frame connector exists with parent base_footprint. Failure at 1647504029.717054738 Exception thrown:"wheel_odom" passed to lookupTransform argument target_frame does not exist. The current list of frames is: Frame frontal_camera_link exists with parent base_link. Frame base_link exists with parent base_footprint. Frame connector exists with parent base_footprint. At time 1647504033.559 - Translation: [0.000, 0.000, 0.000] - Rotation: in Quaternion [0.000, 0.000, 0.000, 1.000] in RPY (radian) [0.000, -0.000, 0.000] in RPY (degree) [0.000, -0.000, 0.000] At time 1647504034.560 - Translation: [0.000, 0.000, 0.000] - Rotation: in Quaternion [0.000, 0.000, 0.000, 1.000] in RPY (radian) [0.000, -0.000, 0.000] in RPY (degree) [0.000, -0.000, 0.000] ------------------- So, clearly, TF is publishing, but with a small initial lag. |
Administrator
|
Is odom TF published faster than 10 Hz? By default odometry is waiting 100 ms to gt the tf, otherwise it shows that warning. "wait_for_transform_duration" would be set as private parameter of the odometry node. For example:
<node pkg="rtabmap_ros" type="rgbd_odometry" name="rgbd_odometry" > <param name="guess_frame_id" value="wheel_odom"/> <param name="wait_for_transform_duration" value="1.0"/> </node> In the code, the warning is logged here, and wait_for_transform_duration is read here from rosparam. |
Free forum by Nabble | Edit this page |