-
Notifications
You must be signed in to change notification settings - Fork 558
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[icp_odometry]: Did not receive data since 5 seconds! & initial pose cannot be set #1183
Comments
For problem 1, I created #1186, which may be the cause. I think you could just ignore the warning if it was one of the causes cited there. For problem 2, I tried with this demo (adding For problem 3, could you record a rosbag of the scans you are feeding to icp_odometry or kiss-icp? |
Hi @matlabbe , thank you for your response. Here is my rosbag record of my 3d lidar point cloud that I feed into I have recorded it as soon as I started my simulation. I also drove my rover around a little bit during the recording. |
Thank you so much for your help. I will try this out. |
Hi everyone, I am running my robot on simulation using ROS2 Humble within Gazebo and testing SLAM and localization of different sensors.
Setup:
I am using camera, imu, and lidar (with only 90 deg horizontal FOV like our hardware and not 360). I am running
rgbd_odometry
node to extract the camera odometry and alsoicp_odometry
node to extract lidar odometry from 3D lidar point cloud. All of these odometry and imu data are then fed intoekf_node
fromrobot_localization
package to extract filtered odometry/odometry/filtered
, which are then fed intortab_slam
node to generate maps. All of these are running inside a modified version of ROS2 Docker container with some extra packages.After I built my packages with
colcon build
, source it, and launch the simulation, I then drive my rover around usingteleop_twist_keyboard
and record all of the odometry values for evaluation usingevo
package. You can see the plot below.Problem:
ros2 bag record
with KeyboardInterrupt, this warning message appears.And the output frequency of the
icp_odometry
jumps from around 0.5 Hz to 4.4 Hz, which is still lower than lidar points cloud publishing at around 5.5 Hz when checked withros2 topic hz /bf/points_raw
after that. That means the input topic is NOT empty like the message suggested. I am also sure that I mapped the/scan
topic to a ghost topic/unused_scan
where no message is published in the launch file. So, I really don't know why this happens. Here is my launch file for reference:I looked into similar issues in the past and I found these issues #189 and #1054. I don't think that the synchronizer is the cause of this problem like suggested here #1054 (comment) since I set
approx_sync
tofalse
. And I am sure that mytf
is working and thebase_link
frame is there. Here is the transform of my robot and simulation:icp_odometry
node will estimate. I did that by declaring the parameterinitial_pose
in yaml file in config folder under my package directory. All of the parameters come from the official wiki http://wiki.ros.org/rtabmap_odom#icp_odometry. However, when I plot the odometry out withevo_traj
fromevo
package, the odometry from lidar estimated by that node always start at somewhere close to the origin and not at the coordinate I gave it! Here is the picture of the xyz of odometry. (If initial pose declaration is working, it should start very close to /odometry/camera and /odometry/lidar)Here is my yaml file in which I declare initial pose. This yaml file is then used by the launch file above.
I have also tried declaring
ground_truth_frame_id
andground_truth_base_frame_id
using mybase_link
(I have a node declared in my robot's URDF fromlibgazebo_ros_p3d.so
to publish ground truth usingbase_link
) but that didn't work. Do you guys have any ideas on how to solve it?This problem is really annoying since that also cause a "teleportation" problem as those lidar input close to 0 made the filtered odometry jump instantly like in the plot below.
icp_odometry
node is always almost 0 and much worse than the camera odometry, which shouldn't be the case. Do you guys also know what could have gone wrong here? I tried usingkiss_icp
package https://github.com/PRBonn/kiss-icp?tab=readme-ov-file but the odometry from that is also almost zero.I have been trying to solve this problem for 2-3 weeks already and I am really out of ideas. Any help would be greatly appreciated!
The text was updated successfully, but these errors were encountered: